还记得Spring是怎么配置bean的吗?在Spring中总体来看可以通过三种方式来配置对象:
注解自动装配
@Resource和@Autowired
行为和特性:
按类型装配:默认情况下,@Autowired按类型自动装配Bean。
可选依赖:如果你的依赖是可选的,可以使用required=false设置:
构造器、方法或字段:可以用在构造器,属性字段或Setter方法上。
结合@Qualifier:可以和@Qualifier结合使用以实现按名称装配。
按名称装配:默认情况下,@Resource按名称装配。如果没有匹配到名称,再按类型装配。
不支持required属性:与@Autowired不同,@Resource不支持required属性。
可以用于字段和Setter方法:虽然也可以用于构造器,但不常见。通常用在字段或Setter方法上。
其他注解
@Component:标注一个类为Spring管理的组件。类似的注解还有:
@Service:表示服务层组件。
@Repository:表示DAO(数据访问层)组件。
@Controller:表示Spring MVC控制器组件。
@Primary:当一个类型有多个Bean时,在不使用@Qualifier的情况下,Spring会优先选择标注了@Primary的Bean。
Java配置类
编写一个java类,使用@Configuration修饰该类
Spring依赖注入优先级
@Resource
明确指定名称:
如果通过@Resource(name="beanName")明确指定了 Bean 的名称,那么 Spring 会首先按照名称匹配进行注入。
按字段或属性名称匹配:
如果没有通过 name 属性指定 Bean 的名称,Spring 会尝试按照字段或属性的名称进行匹配。
按类型匹配:
如果按名称匹配失败(包括明确指定名称和按字段名称匹配都没有找到合适的 Bean),Spring 会按类型匹配。
按类型匹配:
按名称匹配结合@Qualifier:
如果有多个同类型的 Bean,可以使用@Qualifier 注解来指定具体的 Bean。
使用@Primary:
按名称匹配字段或属性名称:
在没有使用@Qualifier 时,如果存在多个候选 Bean,Spr