2013-10-14 23 views
23

Tôi đang xây dựng một ứng dụng mới cấu hình mùa xuân thông qua cấu hình java chứ không phải là xml. Ứng dụng này phụ thuộc vào một mô-đun sử dụng cấu hình kiểu xml. Khi tôi thử và khởi chạy ứng dụng của mình, tôi nhận được lỗi sau:Trộn xml và cấu hình java với spring

No qualifying bean of type [com.myModule.myServiceImp] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 

Bean này phải được khai báo trong ứng dụng của mô-đunContext.xml. Cách thích hợp để xử lý điều này là gì? Tôi đã thử chỉ đơn giản là thêm nó như tôi sẽ nếu tôi đã xâu chuỗi bối cảnh ứng dụng cùng nhau trong web.xml của ứng dụng:

<context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      classpath:com/myModule/appbase-context.xml 
      com.myApp.AppConfig 
     </param-value> 
    </context-param> 

Nhưng tôi vẫn gặp lỗi tương tự. Cách thích hợp để làm điều này là gì?

Trả lời

44

Trong lớp cấu hình, bạn có thể nhập cấu hình xml qua chú thích @ImportResource.

Something như thế này:

@Configuration 
@ImportResource({"classpath:appbase-context.xml"}) 
public class AppConfig { 
    // @Bean definitions here... 
} 

Hãy nhớ rằng, khi bạn đang sử dụng cấu hình Java Spring, bạn cần phải xác định thêm một context-param nói rằng lớp để sử dụng cho bối cảnh ứng dụng của bạn:

<context-param> 
    <param-name>contextClass</param-name> 
    <param-value> 
     org.springframework.web.context.support.AnnotationConfigWebApplicationContext 
    </param-value> 
</context-param> 
+0

tôi có phần thứ hai nhưng nhờ lời nhắc nhở. Đối với context.xml, tôi chỉ cần nhập nó và nó còn lại cho tôi không? Hay tôi cần "chạy" nó bằng cách nào đó? –

+1

Khi 'ApplicationContext' khởi động quá trình tải của lớp' @ Configuration', nó sẽ quét chú giải này và tự động tải nó. –

+1

@ImportResource sẽ chạy nó. –

Các vấn đề liên quan