一、@Autowired和@Qualifier

@Autowired是自动注入的注解,写在属性、方法、构造方法上,会按照类型自动装配属性或参数。该注解,可以自动装配接口的实现类,但前提是spring容器中只有一个实现类的bean,多个bean会报错。同样,自动装配其他类型时也一样。

但同样的类型的bean有多个实例或同样的接口有多个实现类的bean,可以使用@Qualifier指定bean名称,指定bean名称后,就会按照bean的名称匹配。

  • 写在属性上,会自动注入bean到属性里。
  • 写在方法或构造方法上,会将自动注入bean到参数里。

另外,@AutoWired无法对String、int等常量数据注入。

装配规则:

  当添加@Qualifier时,按照bean的名称匹配。

  当只写@Autowired时,按照类型自动装配,若同时有多个或一个都不满足,会报错。

1、写在属性上

@Autowired默认按照类型注入,匹配属性类型,也可使用@Qualifier指定bean名称,使用bean名称装配。

    @Autowired
@Qualifier("userServiceImpl")
private UserService userService;

2、写在方法上

@Component("testSon")
public class Son {
int num = 99;
} @Autowired
public Father(@Qualifier("testSon") Son son) {
this.son = son;
}

二、@Resource

@Resource并非spring中的注解,而是tomcat内的javax.annotation包下的注解。

该注解可以写在属性上或方法上,实现自动注入。不能写在构造方法上。

装配规则:

  当只写注解,默认按属性名查找beanid,查到则直接装配,若spring容器中没有该beanid,则继续安装属性类型匹配,若只有一个匹配,则装配;若同时满足多个则报错。

  当使用了name参数,则只按照name值匹配beanid,没有满足条件,会报错。

1、@Resource默认安照属性名注入,可使用name和type属性指定bean名称和类型

@Resource(name="testSon")
Son son;

2、写在set方法上

    @Resource(name="testSon")
public void setSon(Son son) {
this.son = son;
}

spring注入注解@Resource和@Autowired的更多相关文章

  1. 聊聊依赖注入注解@Resource和@Autowired

    1. 前言 @Resource和@Autowired注解都可以在Spring Framework应用中进行声明式的依赖注入.而且面试中经常涉及到这两个注解的知识点.今天我们来总结一下它们. 2. @R ...

  2. Spring注解@Resource和@Autowired区别对比

    转载:http://www.cnblogs.com/think-in-java/p/5474740.html @Resource和@Autowired都是做bean的注入时使用,其实@Resource ...

  3. Spring 注解 @Resource和@Autowired(转)

    鸣谢:http://my.oschina.net/u/216467/blog/205951 @Resource和@Autowired两者都是做bean的注入使用. 其实@Resource并不是Spri ...

  4. Spring注解 @Resource和@Autowired

    @Resource和@Autowired两者都是做bean的注入使用.其实@Resource并不是Spring的注解,他的包是javax.annotation.Resource 需要导入.但是Spri ...

  5. Spring 注解 @Resource和@Autowired

    @Resource和@Autowired两者都是做bean的注入使用. 其实@Resource并不是Spring的注解,他的包是javax.annotation.Resource 需要导入.但是Spr ...

  6. Spring注解@Resource和@Autowired的区别

    @Resource和@Autowired都是用来做bean的依赖注入的,两者都可以写在字段和setter方法上. java为我们提供了 javax.annotation.Resource这个注解. s ...

  7. Spring注解@Resource和@Autowired区别对比、spring扫描的默认bean的Id、程序获取spring容器对象

    -------------------------注解扫面的bean的ID问题-------------------------- 0.前提需要明白注解扫描出来的bean的id默认是类名首字母小写,当 ...

  8. 【转载】Spring注解@Resource和@Autowired区别对比

    @Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Sprin ...

  9. 注解@Resource和@Autowired区别对比

    @Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Sprin ...

随机推荐

  1. [RN] 全国城市列表选择 (包含定位城市、热门城市、全国城市)

    全国城市列表选择 (包含定位城市.热门城市.全国城市) 用ScrollView 实现,解决 SectionList 实现的卡顿问题 实现效果如图: 代码实现如图: 主逻辑文件 cityList.js ...

  2. [PHP] Laravel使用redis保存SESSION

    Laravel使用redis保存SESSION 首先确认服务器已经安装redis服务,php安装了redis扩展. 1.打开config/database.php.在redis配置项中增加sessio ...

  3. ORA-01950:对表空间“”XXXX”无权限,解决办法

    上图报错 解决方案比如你要在用户(或SCHEMA)usera中建表,那么你用SYSTEM登录ORACLE后,执行如下SQL : ALTER USER 用户名 QUOTA UNLIMITED ON 表空 ...

  4. redis实现mysql的数据缓存

    环境设定base2 172.25.78.12 nginx+phpbase3 172.25.78.13 redis端base4 172.25.78.14 mysql端# 1.在base2(nginx+p ...

  5. 每日一问:说说你对 LeakCanary 的了解

    昨天的问题说到了关于 内存泄漏需要注意的点,在文章最后有说到 LeakCanary 检测内存泄漏.实际上,我相信绝大多数人也知道甚至使用过这个库. 这个系列通常来说如果发现了不错的资源,会选择直接截取 ...

  6. TaskTimer

    什么是调度 任务:就是事情 调度:在不同的时间点或者在指定的时间点或者间隔多长时间去运行这个任务.就是生活中的闹钟 相关的类Timer 类:位于 java.util 包中 案例 实现时间的动态刷新 任 ...

  7. SpringBoot系列教程web篇Servlet 注册的四种姿势

    原文: 191122-SpringBoot系列教程web篇Servlet 注册的四种姿势 前面介绍了 java web 三要素中 filter 的使用指南与常见的易错事项,接下来我们来看一下 Serv ...

  8. angular数据请求 token验证

    angualr的token 验证会经常用在登录,注册等地方 对于token的使用方法按照以下步骤进行使用即可 1.新建一个服务 ng g service services /+服务名  eg:ng g ...

  9. [转帖]美团在Redis上踩过的一些坑-3.redis内存占用飙升

    美团在Redis上踩过的一些坑-3.redis内存占用飙升 博客分类: 运维 redis redismonitor内存突增client listinfo     转载请注明出处哈:http://car ...

  10. [Leetcode] Binary Tree Pruning

    題目是說,如果左右子樹都不存在又自已為0,就去掉那個子樹(設為null) recursive後序,左子樹,右子樹,然後是根 自已同時又是別人的子樹,所以要告訢根自已是不是存在 從a開始,左右子樹都不存 ...