【Spring】通过注解自动装配 @Autowired, @Resource区别,科普:@Nullable, @Autowired
【爱迪】Spring 之 自动装配 @Autowired, @Resource区别,科普:@Nullable, @Autowired:
使用注解前步骤:
1.导入约束 :在 beans 头部配置 context 约束
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
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config/>
</beans>
如图:

准备就绪后,方可使用注解 完成自动装配:



@Autowired (注解自动装配) 首先 以 ByType 的方式匹配,如果不行,就报错
(1)可直接作用在属性上(图一)
(2)可在set方式上使用(图二)
(3)作用在属性上是可去掉 类的 set 方法(图三),因为注解使用的是反射的原理
★ 如果 @Autowired 注解 自动装配的环境比较复杂,自动装配无法通过一个注解(@Autowired)完成的时候,
可以使用 @Qualifier(value="xxx")去配置 @Autowired 的使用,指定一个唯一的 bean 对象注入!
例如:
加之前:



通过名字,找不到 cat 或者 dog ,再而便会通过类型匹配,每个类型因为有两个,所以也匹配不到,故报错
加之后:


运行成功~
@Resource (同样是自动装配注解,不需要配置,可直接使用,一般不常用)
@Resource(name = "XXX") 指定一个唯一的 bean 对象注入.

总结:
@Resource 和 @Autowired 的区别:
1. 都是采用自动装配的,都可以放在属性字段上
2. @Autowired 通过 ByType 的方式实现,而且必须要求这个对象存在!【常用】
3. @Resource 默认通过 ByName 的方式实现,如果找不到名字,则通过 ByType 实现,如果还找不到,则会报错!
4. 执行顺序不同: @Autowired 通过 ByType 的方式实现!
科普:
1. @Nullable : (字段标记了这注解,说明字段可以为空)
添加这个注解后:这个红框里的name 可以为 null 值;
2. @Autowired: 它有一个属性值,当等于 false 时表示 这个对象可以为 null ,否则不允许为空


浙公网安备 33010602011771号