3 回答

TA貢獻1946條經驗 獲得超4個贊
除了@GaryF的答案外,還有以下針對該問題的漂亮解決方案(用于產生的項目Spring Roo):
myapp-config.xml
<!-- Load everything except @Controllers -->
<context:component-scan base-package="com.myapp">
<context:exclude-filter expression="org.springframework.stereotype.Controller"
type="annotation"/>
</context:component-scan>
myapp-servlet.xml
<!-- Load @Controllers only -->
<context:component-scan base-package="com.myapp" use-default-filters="false">
<context:include-filter expression="org.springframework.stereotype.Controller"
type="annotation"/>
</context:component-scan>
編輯:
<context:component-scan>從中刪除myapp-config.xml意味著,所有自動發現的帶注釋的Bean都在DispatcherServlet的上下文(即從中加載的上下文myapp-servlet.xml)中注冊。
但是,推薦的方法是將servlet的上下文用于特定于表示的內容(例如控制器),并將根上下文(myapp-config.xml)用于應用程序的核心服務。上面的解決方案使這種方法變得容易。
關于實際考慮,當您將核心服務放在servlet的應用程序上下文中時,不能從該servlet的范圍之外訪問它們,例如,從另一個servlet進行訪問(您可能需要使用另一個servlet來實現另一種訪問技術)或過濾器(例如Spring Security過濾器)。這就是在根應用程序上下文中擁有核心服務的原因。
- 3 回答
- 0 關注
- 661 瀏覽
添加回答
舉報