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 关注
- 622 浏览
添加回答
举报