2011-01-24 12 views
7

Đó có thể là một câu hỏi ngớ ngẩn cho các chuyên gia trong Spring MVC nhưng tôi không biết làm thế nào nó hoạt động dưới mui xe đó là lý do tại sao tôi hỏi.Có thể tích hợp Spring MVC với Guice không?

Một từ ngữ khác cho cùng một câu hỏi: có phụ thuộc nào vào Spring DI bên trong Spring MVC không?

+0

Bạn đã lấy một cái nhìn tại [google-sitebricks] (http://code.google.com/p/google-sitebricks/)? – ColinD

Trả lời

7

Tôi khá chắc chắn không thể sử dụng Spring MVC nếu không có vùng chứa IOC.

Ví dụ: tại trung tâm của MVC mùa xuân nằm ở số DispatcherServlet. DispatcherServlet khởi bản thân sử dụng các phương pháp:

/** 
* This implementation calls {@link #initStrategies}. 
*/ 
@Override 
protected void onRefresh(ApplicationContext context) { 
    initStrategies(context); 
} 

/** 
* Initialize the strategy objects that this servlet uses. 
* <p>May be overridden in subclasses in order to initialize 
    * further strategy objects. 
*/ 
protected void initStrategies(ApplicationContext context) { 
    initMultipartResolver(context); 
    initLocaleResolver(context); 
    initThemeResolver(context); 
    initHandlerMappings(context); 
    initHandlerAdapters(context); 
    initHandlerExceptionResolvers(context); 
    initRequestToViewNameTranslator(context); 
    initViewResolvers(context); 
} 

Vì vậy, bạn có thể thấy, tất cả mọi thứ được tích hợp chặt chẽ với giao diện ApplicationContext.

Vì vậy, cơ hội duy nhất của bạn là triển khai ứng dụng Guice của ApplicationContext và điều đó sẽ rất khó tìm, tôi đoán vậy.

3

Có thể sử dụng một số chức năng Spring MVC nguyên thủy hơn mà không cần sử dụng thùng chứa IOC của Spring - đây là, sau tất cả, toàn bộ điểm của IoC.

Sẽ rất khó, vì nhiều thành phần Spring MVC sử dụng cuộc gọi lại vòng đời độc quyền của Spring (ví dụ: InitializingBeanDisposableBean) mà Guice sẽ không biết. Bạn sẽ phải tự mình xử lý.

Câu hỏi hay hơn là tại sao bạn có muốn thực hiện việc này không? Nếu không sử dụng Spring IoC, Spring MVC sẽ mất hầu hết sức hấp dẫn của nó. Tôi không hiểu tại sao bạn lại muốn sử dụng cái này mà không có cái kia.

+0

Tôi không thể đủ khả năng sử dụng Spring trong đám mây - mất quá nhiều thời gian để bắt đầu một phiên bản mới. Và tôi cần một số MVC cho sự phát triển front-end. Một tùy chọn khác là Struts, Stripes và thực thi MVC đơn giản của riêng tôi. – Roman

+0

Struts2 tích hợp độc đáo với Guice. Tôi đã nghe một số điều tốt về Stripes, cũng như (không chắc chắn như thế nào nó tích hợp với Guice). –