首页 > 其他分享 >spring中@Autowired和@Resource的区别

spring中@Autowired和@Resource的区别

时间:2023-05-23 21:12:23浏览次数:28  
标签:Resource name Autowired spring UserDao userDao 属性

@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包 是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。 1、共同点 两者都可以写在字段和setter方法上。两者如果都写在字段上,那么就不需要再写setter方法。 2、不同点 ( 1)@Autowired @Autowired为Spring提供的注解,需要导入包 org.springframework.beans.factory.annotation.Autowired;只按照byType注入。

public class TestServiceImpl {
// 下面两种@Autowired只要使用一种即可
    @Autowired
    private UserDao userDao; // 用于字段上
    @Autowired
    public void setUserDao(UserDao userDao) { // 用于属性的方法上
        this.userDao = userDao;
    }
}    
@Autowired注解是按照类型( byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允 许null值,可以设置它的required属性为false。如果我们想使用按照名称( byName)来装配,可以结 合@Qualififier注解一起使用。如下:
public class TestServiceImpl {
     @Autowired
      @Qualifier("userDao")
      private UserDao userDao;  
}    
  (2)@Resource @Resource默认按照ByName自动注入,由J2EE提供,需要导入包javax.annotation.Resource。 @Resource有两个重要的属性:name和type,而Spring将@Resource注解的name属性解析为bean的 名字,而type属性则解析为bean的类型。所以,如果使用name属性,则使用byName的自动注入策 略,而使用type属性时则使用byType自动注入策略。如果既不制定name也不制定type属性,这时将通 过反射机制使用byName自动注入策略。
1 public class TestServiceImpl {
2 // 下面两种@Resource只要使用一种即可
3 @Resource(name="userDao")
4 private UserDao userDao; // 用于字段上
5 @Resource(name="userDao")
6 public void setUserDao(UserDao userDao) { // 用于属性的setter方法上
7 this.userDao = userDao;
8 }
9 }

 

标签:Resource,name,Autowired,spring,UserDao,userDao,属性
From: https://www.cnblogs.com/huoziqi/p/17426382.html

相关文章

  • Spring源码:Bean生命周期(终章)
    前言本系列前面讲解了Spring的bean定义、bean实例化、bean初始化等生命周期。这些步骤使我们能够了解bean从创建到准备好使用所经历的过程。但是,除了这些步骤,bean的销毁也是非常重要的一步。在本系列的最后,我们将深入探讨bean的销毁过程,包括在什么情况下会发生销毁、销毁的顺序以......
  • org.springframework.data.annotation.Transient 和 javax.persistence.Transient 的
    1、org.springframework.data.annotation.Transient 和 javax.persistence.Transient 都是用于标记一个属性不需要被持久化到数据库中的注解。它们的区别在于它们所处的框架和使用场景。org.springframework.data.annotation.Transient 是SpringDataJPA框架提供的注解,用......
  • SpringMVC响应json数据
    SpringMvc响应json数据@Controller@RequestMapping("/json")publicclassJsonController{@RequestMapping("/js1")@ResponseBody//响应json:将return的值作为文本响应给客户端,而不是转发到对应页面publicStringjs1(){System.out.println("js......
  • 学习笔记-Spring事务
    学习的文章小姐姐非要问我:spring编程式事务是啥?(qq.com)一文搞懂什么是事务-知乎(zhihu.com)阿里3面:Spring声明式事务连环炮,让我措手不及。。(qq.com)带你读懂Spring事务——事务的传播机制-知乎(zhihu.com)spring事务失效的12种场景_事务什么时候失效_hanjq_cod......
  • SpringBoot声明连接多个redis数据源配置模版
    在实际开发中,我们可能会用到2个不同的redis数据源;如何连接查询详情:文章目录一、依赖二、配置文件三、config类配置四、序列化问题五、封装工具类一、依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-dat......
  • (二)Spring源码解析:默认标签解析
    一、概述还记得我们在上一讲末尾提到的关于默认标签解析和自定义标签解析吧。本讲就来针对默认标签解析进行讲解。为了便于衔接上一讲的内容,我们将源码部分粘贴出来:从上图中的源码中,我们可以看出默认标签的解析是在parseDefaultElement(ele,delegate)方法中实现的。我们来看一下这......
  • (三)Spring源码解析:自定义标签解析
    一、使用示例步骤1:创建User实体步骤2:定义一个XSD文件描述组件内容步骤3:创建BeanDefinitionParser接口的实现类,用来解析XSD文件中的定义和组件定义。步骤4:创建NamespaceHandlerSupport实现类,目的是将组件注册到Spring容器中。步骤5:编写spring.handlers和spring.schemas文件,默认位置......
  • 聊聊如何利用spring插件来实现策略模式
    前言偶然的机会发现spring有个spring-plugin,官网对它的介绍是SpringPluginprovidesamorepragmaticapproachtoplugindevelopmentbyprovidingthecoreflexibilityofhavingpluginimplementationsextendingacoresystem'sfunctionalitybutofcoursenotdel......
  • 微信小程序集成微信支付开发,后端是springboot项目
    一、准备工作首先是进入到小程序后台关联微信支付商户、以及接入微信支付申请 二、小程序端代码主要是用到了wx.requestPaymentAPI2.1在wxml文件中添加支付按钮<buttonbindtap="requestPayment">支付</button>2.2在wxss文件中定义支付按钮样式button{backgro......
  • SpringBoot配置文件
    概述初始化SpringBoot项目时,在resources目录下有一个默认的全局配置文件application.properties。SpringBoot通过配置文件来修改SpringBoot自动配置的默认值SpringBoot支持两种格式的配置文件application.yml和application.propertiesapplication.properties写法appl......