一、前沿
Spring 中我们经常使用 Autowired 或者 Resource 注解来进行依赖注入,它们都可以写在字段或者该字段的setter方法上,但它们之间是有区别的:
Autowired:默认是按照类型装配注入的,如果想按照名称来装配注入,要结合 @Qualifier 一起使用。默认情况下必须要求依赖的对象存在,如果要允许 null 值,可以设置它的 required 属性为 false,如:@Autowired(required = false)
Resource:默认是按照名称装配注入的,只有当找不到与名称匹配的 bean 时才会按照类型来装配注入。如果没有指定name,当注解在字段上时,默认取字段名进行按照名称查找,如果注解写在 setter 上,默认取属性名进行装配。但是需要注意的是,如果name属性一旦指定,则只能按照名称进行装配注入
Resource 注解是由 J2EE 提供的,故减少系统对 Spring 的依赖,建议使用 Resource 注解
Autowired 注解是由 Spring 提供的
下面通过demo示例分别介绍 Autowired 和 Resource
二、Autowired 注解
下面来看一下使用的demo示例
2.1 按照类型自动装配注入依赖
配置文件如下:
使用的代码如下(按照类型自动装配注入):
2.2 按照名称自动装配注入依赖
按照名称自动装配注入依赖必须要结合 @Qualifier 使用,具体代码如下:
三、Resource 注解
下面来看一下demo示例:
3.1、按照默认名称来装配注入
3.2、按照指定的name名称来装配注入
四、总结
不管是哪种方式自动装配依赖注入,按照名称类型来装配时,即 @Autowired 结合 @Qualifier 使用时 或者 @Resource 指定name使用时,注解 @Service上一定要写上 Service 的名字