@Resource注解和@Autowired注解
原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11770982.html
1. @Resource
类来源: javax(Java扩展包)
类全称: javax.annotation.Resource
默认注入方式: byName(反射机制)
定义对象: 变量, set方法
重要属性: name(Spring解析为Bean的名称), type(Spring解析为Bean的Java类型)
指定注入方式:
a) 如果使用name属性,则使用byName自动注入策略--> @Resource(name = "good")
b) 如果使用type属性,则使用byType自动注入策略--> @Resource(type = java.lang.String.class)
Bean查找规则:
a) 同时指定了name和type, 则在Spring上下文中找到唯一匹配的Bean, 找不到抛出异常--> @Resource(name = "good", type = java.lang.String.class)
b) 指定了name, 则在Spring上下文中找到名称(使用注解注册的Bean的name一般为类名称的驼峰写法)匹配的Bean进行装配,找不到或者找到多个则抛出异常-->@Resource(name = "good")
c) 指定了type, 则在Spring上下文中找到匹配的唯一Bean进行装配, 找不到或者找到多个则抛出异常-->@Resource(type = java.lang.String.class)
d) 没有指定name或者type, 按照byName进行查找装配, 如果没有匹配, 则回退到一个原始类型(比如String hello变量的原始类型就是java.lang.String)进行匹配(根据type匹配原始类型), 找不到或者找到多个则抛出异常 .
2. @Autowired
类来源: Spring
类全称: org.springframework.beans.factory.annotation.Autowired
默认注入方式: byType
定义对象: 变量, 构造器注入, set方法
重要属性: Qualifier,required
指定注入方式: 默认为byType
Bean查找规则:
a) 默认是要对象必须存在的, 如果允许对象为null, 则要设置 required = false
b) 如果是根据类型查找, 有多个相同类型(is-a)的实现类,那么会抛出异常 , 此时需要加上@Qualifier("hello")注解指定注入的Bean的标识名称(不一定特指id或者name,就是指的@Service("thisTarget")中的thisTarget这个值,也不排除没有这个值自动查找其id或者name的可能性), 则按照标识名称去查找,若有多个相同名称的Bean,则抛出异常.
@Resource注解和@Autowired注解的更多相关文章
- @Autowired注解与@Resource注解的区别与用法
Spring不但支持自己定义的@Autowired注解,还支持JSR-250规范定义的几个注解.如:@Resource.@PostConstruct及@PreDestroy 1. @Autowired ...
- Spring5:@Autowired注解、@Resource注解和@Service注解
什么是注解 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点: 1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分 ...
- Spring中@Autowired注解、@Resource注解的区别
Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@PostConstruct以及@PreDestroy. @Resour ...
- 转:Spring中@Autowired注解、@Resource注解的区别
Pay attention: When using these annotations, the object itself has to be created by Spring context. ...
- @Resource 和 @Autowired注解的异同
@Resource 和 @Autowired注解的异同 @Autowired 默认按类型装配,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false 例 ...
- Spring中@Autowired注解、@Resource注解的区别 (zz)
Spring中@Autowired注解.@Resource注解的区别 Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@ ...
- 04 Spring的@Autowired注解、@Resource注解、@Service注解
什么是注解 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事务,这么做有两个缺点: 1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分 ...
- Spring中Autowired注解,Resource注解和xml default-autowire工作方式异同
前面说到了关于在xml中有提供default-autowire的配置信息,从spring 2.5开始,spring又提供了一个Autowired以及javaEE中标准的Resource注释,都好像可以 ...
- @Resource与@Autowired注解的区别
一.写本博文的原因 年初刚加入到现在的项目时,在使用注解时我用的@Resource.后来,同事:你怎么使用@Resource注解?我:使用它有错吗?同事:没错,但是现在都使用@Autowired.我: ...
随机推荐
- pod内执行kill -3 pid
1.使用logs命令监控输出 kubectl logs iothub2-iop-dm-replicaset-0 -n iot -f >> yuanqianqian.txt 2.在p ...
- 深入 Laravel 内核之IOC容器
升级工厂前的准备工作 无规矩不成方圆,随着越来越多的行为出现,我们需要需要定下一些规范. 为了约束每一个行为的规范,需要定义一个行为接口: interface BehaviorInterface { ...
- Jenkins_构建任务提示文件权限不足的处理方法
问题现象 构建任务失败,查看日志提示读取文件权限不足. 问题分析 在linux上查看对应文件,发现这些文件只有root用户才有读的权限,jenkins默认是以jenkins用户在操作linux系统,因 ...
- Linux sudo 找不到命令
普通用户执行需要root权限的命令,提示"找不到命令",但是root用户执行该命令不报错,可能是由于该命令未处在sudo搜索的路径. 本文以sudo easy_install 为例 ...
- MySQL提权之启动项提权
关于MySQL的启动项提权,听其名知其意.就是将一段 VBS脚本导入到 C:\Documents and Settings\All Users\「开始」菜单\程序\启动 下,如果管理员重启了服务器, ...
- Typora中本地图片无法上传CSDN解决方案
解决方法 本地图片无法上传,我们可以选择使用在线免费图床 把想要使用的图先上传到图床后复制对应的MarkDown语句到typora即可 在这里,给大家推荐一个图床 [图床链接](Image Uploa ...
- 使用.NET 6开发TodoList应用(30)——实现Docker打包和部署
系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 .NET 6 Web API应用使用最多的场景是作为后端微服务应用,在实际的项目中,我们一般都是通过将应用程序打包成docke ...
- C# 实现Parallel.For
static class MyParallel { //4.0及以上用Task, Task的背后的实现也是使用了线程池线程 //static List<Task> tasks = new ...
- 【刷题-PAT】A1108 Finding Average (20 分)
1108 Finding Average (20 分) The basic task is simple: given N real numbers, you are supposed to calc ...
- 【记录一个问题】redis中执行事务出现错误“EXECABORT Transaction discarded because of previous errors”
执行事务的大致代码如下: redisClient := GetRedisClient() pipe := redisClient.TxPipeline() err := pipe.ZAdd(k, ar ...