【spring-boot】使用Autowried还是Resouce

在做项目时,发现项目中 加载类时,有的地方使用@Autowired,有的地方使用@Resource

在网上搜集了资料

共同点

@Resource和@Autowired都可以作为注入属性的修饰,在接口仅有单一实现类时,两个注解的修饰效果相同,可以互相替换,不影响使用。

不同点

@Resource是Java自己的注解,@Resource有两个属性是比较重要的,分是name和type;Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。
@Autowired是spring的注解,是spring2.5版本引入的,Autowired只根据type进行注入,不会去匹配name。如果涉及到type无法辨别注入对象时,那需要依赖@Qualifier或@Primary注解一起来修饰。

写列子

新建 HumanService.java类

实现类 ManServiceImpl.java

新建HumanController.java

运行程序

输出内容为: man run marathon

把controller里的 @Autowired 改成@Resource 也能正常访问。

假如我写多个实现类会怎么样呢?

新建一个 WomanServiceImpl.java

运行程序,发现报错了,因为有两个实现类,程序不知道找那个了

怎么办呢?

有两种办法

第一种,在实现类中给类起名字,在引入的时候直接引入名字。

例如:在ManServiceImpl.java类,@Service上加值。@Service(value = “manService”) 或者 @Component(value = “manService”)

在Controller类中使用时,也需要制定一下名字。

如果使用@Resource 需要加上 @Resource(name=”manService”)

如果使用@Autowired 需要使用@Qualifier(value=”manService”)

如果想优先引用某一个类,可以在实现类上使用 @Primary。

Original: https://www.cnblogs.com/wangkongming/p/12552065.html
Author: KoMiles
Title: 【spring-boot】使用Autowried还是Resouce

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/539714/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Java之万年历

    @ 二、Java之万年历 2.1 要求 2.2 思路 2.3 源代码 2.4 结果截图 二、Java之万年历 2.1 要求 输入年份; 输入月份; 输出某年某月的日历。 2.2 思…

    Java 2023年6月5日
    096
  • 数据结构与算法之随机快速排序

    快速随机排序的思路是从一个数组中随机选择一个主元,然后将这个主元放到数组的最后.循环数组时,先定义一个指针,发现了比主元小的元素,如果指针和循环下标相同 则只是把指针自增,如果发现…

    Java 2023年6月8日
    068
  • swagger

    Swagger简介 前后端分离 前端 -> 前端控制层、视图层 后端 -> 后端控制层、服务层、数据访问层 前后端通过API进行交互 前后端相对独立且松耦合 产生的问题…

    Java 2023年6月9日
    072
  • NoSQL,关系型数据库,行列数据库对比、类比

    数据库对比、类比 关系型数据库、NoSQL 关系型数据库 表与表之间有关系。表存储一些格式化的数据结构,每个元组字段的组成都一样,这样便于表之间的联结操作。不过也限制了其性能瓶颈。…

    Java 2023年6月8日
    074
  • Spring Security认证流程分析(6)

    1.认证流程分析 Spring Security中默认的一套登录流程是非常完善并且严谨的。但是项目需求非常多样化, 很多时候,我们可能还需要对Spring Secinity登录流程…

    Java 2023年6月13日
    047
  • String两种创建方式的区别

    创建String有两种方式: 方式一:直接赋值 String s = “jack”; 方式二:调用构造器 String s2 = new String(&#…

    Java 2023年6月9日
    065
  • Mysql重复数据查询置为空

    前两天产品有个需求,相同的商品因为价格不同而分开展示,但是明细还是算一条明细,具体区分展示出商品的价格和数量信息,其他重复的商品信息要置空。 需求并不难,用程序代码循环处理就可以了…

    Java 2023年6月5日
    076
  • day43-反射02

    Java反射02 2.Class类 2.1基本介绍 Class类也是类,因此也继承Object类 Class类对象不是new出来的,而是系统创建的 对于某个类的Class类对象,在…

    Java 2023年6月15日
    060
  • Java 常用类总结(SE基础)

    本篇博客对java常用类相关知识进行了归纳总结,比较详细,适用于学习和复习。 字符串相关的类 1.1 String String是一个 final类,代表不可变的字符序列。不可被继…

    Java 2023年6月7日
    080
  • window.history.go 返回上一页 并判断是否后退的 然后决定是否刷新

    使用window.history.go(-1)返回上页的同时 断页面是通过链接打开还是通过后退按钮返回打开的?加入以下代码: 引用内容: 也可禁止缓存,重新进入页面 引用内容: 返…

    Java 2023年6月13日
    066
  • servlet获取表单数据

    Java servlet获取form表单数据(参数) 在 Servlet 中如何使用 HttpServletRequest 获取请求参数和 request 对象传递数据有哪些方法。…

    Java 2023年6月14日
    0107
  • 超全详解Java开发环境搭建

    在项目产品开发中,开发环境搭建是软件开发的首要阶段,也是必须阶段,只有开发环境搭建好了,方可进行开发,良好的开发环境搭建,为后续的开发工作带来极大便利。 对于大公司来说,软件开发环…

    Java 2023年5月29日
    065
  • 实现cookie跨域访问

    通过HTML SCRIPT标签跨域写cookie: 由于html的script标签的src属性,可以支持访问任何域的资源,通过script发起一个get类型的网络请求,获取资源。 …

    Java 2023年6月7日
    057
  • String vs StringBuffer vs StringBuilder

    String vs StringBuffer vs StringBuilder 本文翻译自:https://www.digitalocean.com/community/tutor…

    Java 2023年6月15日
    061
  • Java8 Stream对集合的一些应用

    工作中一段时间对数据统计操作比较多,总结了部分常用到的Stream流操作。 1. 过滤并判空 //String fundCode,List totalSealedStatistic…

    Java 2023年5月29日
    059
  • 竟然有一半的人不知道 for 与 foreach 的区别???

    之前有一个同事突然我问了我一个问题,说在foreach当中能不能删除list里面的元素,我当时大概说了一下是否能删除,以及原因;接下来我们来探讨一下是否能够如此; 首先,我们一一段…

    Java 2023年5月29日
    088
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球