我已经创建了一个基于教程的spring应用程序,有一些东西不是完全清楚,我希望有人能澄清。
我有2个配置文件- mvc-config.xml,这是调度程序servlet和application-config.xml,这是构成应用程序的bean。
如果我想在控制器和bean (dao和services)中使用注释,我是否需要在两个xml文件中包含以下内容,或者是否继承这些内容?
<annotation-driven />
<context:component-scan base-package="com.ws.jaxb" />
<context:annotation-config />
当您设置Spring同时使用mvc-config.xml
和application-config.xml
时,将创建两个应用程序上下文。根上下文(对应application-config.xml
)和web上下文(对应mvc-config.xml
)
在你的例子中,你需要做的是像下面这样的事情来让一切都像预期的那样工作:
mvc-config.xml
<mvc:annotation-driven /> <!-- for standard Spring MVC features -->
<context:component-scan base-package="com.ws.jaxb" use-default-filters="false">
<context:include-filter expression="org.springframework.stereotype.Controller" type="annotation"/>
</context:component-scan>
application-config.xml
<context:component-scan base-package="com.ws.jaxb">
<context:exclude-filter expression="org.springframework.stereotype.Controller" type="annotation"/>
</context:component-scan>
上面提到的代码的效果是只将控制器添加到web上下文中,而所有其他Spring bean都添加到根上下文中。还请注意,不需要<context:annotation-config/>
,因为<context:component-scan>
提供了