首先看一段applicationContext.xml中的自动扫描配置
<context:component-scan base-package="org.java.test" use-default-filters="false">
<!-- 第一种:按照注解类型扫描,此处扫描@Service -->
<context:include-filter type="annotation" expression="org.springframework.stereotype.Service" />
<!-- 第二种:按照aspectj表达式的方式扫描四种类型 <context:include-filter type="aspectj" expression="org.java.test.*.*.service.impl.*"/> -->
<!-- 第三种:按照正则表达式的方式扫描四种类型 <context:include-filter type="regex" expression="org.java.test.*" /> -->
<!-- 第四种:扫描具体的一个bean,扫描接口也可以
<context:include-filter type="assignable" expression="org.java.test.admin.leave.service.WorkflowService"/> -->
</context:component-scan>
1、如果只写:<context:component-san base-package="org.java.test" />,那么spring默认会使用构造型注解查找基础包下的所有的类,我们必须要使用注解标注对应的类,让spring自动扫描到并进行装载处理。这些注解有:
@Component : 通用的构造型注解,表示该类是spring的组件,也就是spring会将该类注册成Bean,ID默认为类限定名首字母小写,也可以在注解中显式指定ID。
@Controller : 表示该类为SpringMVC的控制器,用于标注视图控制层。
@Repository : 表示该类为数据仓库,用于标注Dao层的实现类。
@Service : 表示该类为服务类,用于标注service层的实现类。
2.对于上面四种过滤策略,可根据需要选用。