2012-01-19 36 views
11

Tôi mới làm quen với Spring và có một tình huống là một dự án đơn lẻ với nhiều mô-đun bao gồm một mô-đun web. Mô-đun web sử dụng Spring MVC, nhưng tôi đã tự hỏi liệu tôi có thể có cấu hình Spring chính ở cấp dự án để quản lý toàn bộ dự án, để tôi có thể tận dụng toàn bộ khung công tác Spring hay không.Cấu hình mùa xuân trong dự án đa mô-đun

main 
    -module1 
    -module2 
    -web 
     +spring3.1, spring-security 

Cài đặt nào tốt nhất cho trường hợp này?

Trả lời

6

Bố cục xây dựng và thời gian chạy CLASSPATH là hai thứ khác nhau. Ngay cả khi bạn xác định các tệp applicationContext.xml riêng biệt hoặc @Configuration các lớp học trong các mô-đun khác nhau, chúng có thể được hợp nhất thành một CLASSPATH duy nhất.

Điều đó đang được nói module1module2 có thể khai báo ngữ cảnh của riêng chúng, nhưng vì CLASSPATH được hợp nhất vào thời gian chạy, chỉ một ngữ cảnh chính sẽ được tạo. Ngoài ra nếu bạn chọn sử dụng quét CLASSPATH trong một mô-đun, nó có thể chọn các lớp (bean) được chú thích với @Service trong các mô-đun khác.

Trong mô-đun web, cũng phải có phụ thuộc vào thư viện lõi mùa xuân, cũng sẽ phụ thuộc vào spring-web, MVC và spring-security. Mô-đun này sẽ tạo ra bối cảnh con web, có quyền truy cập vào ngữ cảnh chính nhưng không có cách nào khác.

Rõ ràng bạn nên chỉ có một bản duy nhất của mỗi thư viện trong bạn uber-JAR (ear?)

8

Chúng tôi có loại kiến ​​trúc nơi tôi làm việc. Chúng tôi đã quyết định sử dụng ContextLoaderListener (Trình nghe sự kiện mùa xuân) trong mô-đun web.

Sau đó, trong serverApplicationContext.xml, chúng tôi nhập khẩu tất cả các file bối cảnh module:

<import resource="classpath*:module1ApplicationContext.xml" /> 
<import resource="classpath*:module2ApplicationContext.xml" /> 
... 

Vì vậy bạn tận dụng việc bốc bối cảnh mùa xuân trong ứng dụng web khởi tạo ngữ cảnh.

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