<context:component-scan>元素除了完成与<context:annotation-config>一样的工作,还允许Spring自动检测Bean和定义的Bean。这意味着不使用<bean>元素,Spring应用大多数(或者所有)Bean都能够实现定义和装配。
context:component-scan>元素会扫描指定的包及其所有的子包,并查找出能够自动注册为Spring Bean的类。base-package属性标识了<context:component-scan>元素所扫描的包。
那么<context:component-scan>又是如何知道哪些类需要注册为Spring Bean呢?带着疑问,我们继续往下看:
1、为自动检测标注Bean
默认情况下<context:component-scan>查找使用构造型注解所标注的类,这些特殊的注解如下:
- @Component 通用的构造型注解,标识该类为Spring组件()
- @Controller 标识将该类定义为Spring MVC controller(控制层)
- @Repository 标识将该类定义为数据仓库(持久层)
- @Service 标识将该类定义为服务(服务层,也就是业务层)