spring之bean的自动扫描

首先看一段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.对于上面四种过滤策略,可根据需要选用。

原文地址:https://www.cnblogs.com/manliu/p/4492221.html