【1】注解类别
@Component : 基本注解, 标识了一个受 Spring 管理的组件
@Repository : 标识持久层组件
@Service : 标识服务层(业务层)组件
@Controller : 标识表现层组件
【2】context:component-scan标签
<context:component-scan base-package="com.web.annotation"
resource-pattern="repository/*.class"use-default-filters="true">
<context:include-filter> 子节点表示要包含的目标类
<context:exclude-filter> 子节点表示要排除在外的目标类
<context:component-scan> 下可以拥有若干个 <context:include-filter> 和 <context:exclude-filter> 子节点
如下配置将只扫描repository下的包:resource-pattern="repository/*.class"
默认fileter(use-default-filters="true")将扫描所有注解组件,若想使用 include-filter等,则将其改为false.
<context:component-scan base-package="com.web.annotation" resource-pattern="repository/*.class"
use-default-filters="true">
<!-- 只包含Repository注解 ,其他不行-->
<context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
<!-- 不包含Repository注解 ,其他可以-->
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
<!-- 只包含Repository接口及其实现类 ,其他不行-->
<context:include-filter type="assignable" expression="com.web.annotation.repository.UserRepository"/>
<!-- 不包含Repository接口及其实现类 ,其他可以-->
<context:exclude-filter type="assignable" expression="com.web.annotation.repository.UserRepository"/>
</context:component-scan>
@Primary注解
当没有使用@Qualifier注解,而又找到了多个该类型的bean时,@Primary注解让Spring进行自动装配的时候,默认使用首选的bean。
@Bean
标注的方法创建对象的时候,方法参数的值从容器中获取;@Autowired注解常常省略。
@Resource默认按照组件名称(byName)进行装配。还可以提供一个 bean name,以该name为id在容器中进行查询并装配。
使用@Resource注解时,@Primary注解将失效。该注解亦无required=false的功能。