3 回答

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊
除了@GaryF的答案外,還有以下針對(duì)該問題的漂亮解決方案(用于產(chǎn)生的項(xiàng)目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意味著,所有自動(dòng)發(fā)現(xiàn)的帶注釋的Bean都在DispatcherServlet的上下文(即從中加載的上下文myapp-servlet.xml)中注冊(cè)。
但是,推薦的方法是將servlet的上下文用于特定于表示的內(nèi)容(例如控制器),并將根上下文(myapp-config.xml)用于應(yīng)用程序的核心服務(wù)。上面的解決方案使這種方法變得容易。
關(guān)于實(shí)際考慮,當(dāng)您將核心服務(wù)放在servlet的應(yīng)用程序上下文中時(shí),不能從該servlet的范圍之外訪問它們,例如,從另一個(gè)servlet進(jìn)行訪問(您可能需要使用另一個(gè)servlet來實(shí)現(xiàn)另一種訪問技術(shù))或過濾器(例如Spring Security過濾器)。這就是在根應(yīng)用程序上下文中擁有核心服務(wù)的原因。
- 3 回答
- 0 關(guān)注
- 674 瀏覽
添加回答
舉報(bào)