栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

@Service被构造两次

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

@Service被构造两次

除了@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过滤器)。这就是在根应用程序上下文中拥有核心服务的原因。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/381499.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号