如何让各种注解 @Controller ,@Repository,@Service等生效?
必须开启classpath扫描,才可以自动注册这些被标记注解的元素到web application context
必须在Spring 上下文配置文件中用<context: component-scan> ,比如:
- <context:component-scan base-package="chapter08.code.listing"/>
base-package可以指定多个,彼此用逗号分隔,于是所有在这些包下面(加上这些包的子包下面)的并且有注解的都会被认为是Spring的组件。
被扫描的base-package可以用通配符,比如下面例子就是把com.bleum.canton.<模块名>.[service|dao|webservice] 下面的所有被标注的组件都认为是Spring组件。
- <context:component-scan base-package="com.bleum.canton.*.service" />
- <context:component-scan base-package="com.bleum.canton.*.dao" />
- <context:component-scan base-package="com.bleum.canton.*.webservice" />
被扫描的包如果要加入或者排除某些component,可以用include-filter或者exclude-filter,比如下面例子是吧org.example包下面的所有注解都认为Spring组件,但是所有标注为@Repository的组件被排除,而引入所有Stub下的Repository.
- <beans ...>
- <context:component-scan base-package="org.example">
- <context:include-filter type="regex" expression=".*Stub.*Repository"/>
- <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
- </context:component-scan>
- </beans>
本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/845492,如需转载请自行联系原作者