1、Autowired注解
1.1、介绍注解的作用
在 Bean 中直接在 属性 / setter 方法 / 构造函数 上标注
@Autowired注解,IOC 容器会按照属性对应的类型,从容器中找对应类型的 Bean 赋值到对应的属性上,实现自动注入。
1.2、注解属性介绍
在这个注解中有一个属性required,如果是true,那么注入的时候容器必须找到,否则会报错,如果是false,如果在容器中没有找到则设置为null,默认为true
1.3、该注解dl的匹配模式
首先该注解是根据类型进行查找依赖的,其次会通过属性的名称作为BEAN的ID进行查找,如果你不想用默认的,可以配合
@Qualifier进行bean的ID查找
1.4、如果注入的bean有多个一样的类型
可以只用List上面加一个Autowired注解,他会将所有的匹配的Bean类型,进行注入到这个List中
2、JSR250-@Resource
介绍 JSR250 规范之前,先简单了解下 JSR 。
JSR 全程 Java Specification Requests ,它定义了很多 Java 语言开发的规范,有专门的一个组织叫 JCP ( Java Community Process ) 来参与定制。 回到正题,
@Resource也是用来属性注入的注解,它与@Autowired的不同之处在于:@Autowired是按照类型注入,@Resource是直接按照属性名 / Bean的名称注入。
是不是突然有点狂喜,这个 @Resource 注解相当于标注 @Autowired 和 @Qualifier 了!实际开发中,@Resource 注解也是用的很多的,可以根据情况来进行选择。
3、SR330-@Inject
介绍
JSR330 也提出了跟 @Autowired 一样的策略,它也是按照类型注入。不过想要用 JSR330 的规范,需要额外导入一个依赖:
<!-- jsr330 -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
@Inject // 等同于@Autowired
@Named("admin") // 等同于@Qualifier