一、使用准备
1.1、导入约束 :context约束

1.2、配置注解的支持:context:annotation-config
沿用上一篇博客项目!
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!--开启注解支持-->
<context:annotation-config/>
<bean id="cat" class="com.massimo.pojo.Cat"/>
<bean id="dog" class="com.massimo.pojo.Dog"/>
<bean id="people" class="com.massimo.pojo.People"/>
</beans>
二、@Autowired
前提:完成上述准备工作!
实体类:

…
测试:

注意:
- @Autowired直接在属性上使用即可!也可以在set方法上使用!
- 使用Autowired我们可以不用编写Set方法了,前提是你这个自动装配的属性在IOC (Spring) 容器中存在,且符合名字byname!
拓展:
- @Nullable 字段标记了这个注解,说明这个字段可以为null;
- @Autowired的required属性,如果显示定义了Autowired的required属性为false,说明这个对象可以为null,否则不允许为空
public @interface Autowired {
boolean required() default true;
}
- 如果@Autowired自动装配的环境比较复杂,自动装配无法通过一个注解【@Autowired】完成的时候、我们可以使用@Qualifier(value = “xxx”)去配置@Autowired的使用,指定一个唯一的bean对象注入!


三、@Resource

查找机制:先按名字查找,如果没有就按类型查找,如果都没有,则报错!
@Resource的name属性,作用,有多个bean时,可以通过name属性,指定一个唯一的bean对象注入!


四、小结
@Resource和@ Autowired的区别:
- 都是用来自动装配的,都可以放在属性字段上
- @ Autowired通过byType的方式实现,而且必须要求这个对象存在! 【常用】
- @ Resource默认通过byname的方式实现,如果找不到名字,则通过byType实现!如果两个都找不到的情况下,就报错! 【常用】
- 执行顺序不同: @Autowired通过byType的方式实现。@ Resource默认通过byname的方式实现。
本文详细介绍了在Spring框架中如何使用@Autowired和@Resource注解进行自动装配。首先,讲解了使用前的准备工作,包括导入context约束和配置context:annotation-config。接着,讨论了@Autowired注解的用法,包括其在属性和setter方法上的应用,以及如何配合@Nullable和required属性使用。然后,介绍了@Resource注解,它的查找机制以及name属性的作用。最后,总结了@Autowired和@Resource的区别,强调了它们的常用场景和自动装配方式的不同。
362

被折叠的 条评论
为什么被折叠?



