@Autowired和@Resource

简介: @Autowired和@Resource

在Spring框架中,@Autowired@Resource都是用于依赖注入的注解,它们可以用来自动装配Spring容器中的bean。尽管它们的目的相同,但它们之间存在一些差异:

@Autowired

  • @Autowired是Spring框架自带的注解。
  • 它可以通过类型来自动装配,如果一个类有多个相同类型的依赖,可以通过@Autowired结合@Qualifier注解来指定具体的bean。
  • @Autowired可以应用于构造器、字段、设置方法和普通方法。
  • 默认情况下,@Autowired是按类型进行装配的,但也可以通过设置其required属性为false来使其成为可选的依赖。

@Resource

  • @Resource是Java自带的注解,由JSR-250规范提供。
  • 它可以通过名称来自动装配,即它会尝试按照名称来查找并注入bean。
  • @Resource可以应用于构造器、字段和设置方法。
  • @Resource默认按照名称进行装配,如果没有指定名称,则会尝试按类型进行装配。
  • @Resource有一个name属性,可以通过它来指定要注入的bean的名称。

使用示例

@Service
public class MyService {
   
    private MyDependency dependency;

    @Autowired
    public MyService(MyDependency dependency) {
   
        this.dependency = dependency;
    }

    @Autowired
    @Qualifier("specificBean")
    public void setDependency(MyDependency dependency) {
   
        this.dependency = dependency;
    }
}

@Component
public class MyComponent {
   
    @Resource(name="specificBean")
    private MyDependency dependency;
}

我个人是比较推荐使用@Resource注解,不仅简单,代码整洁,而且容错率也高,关键能去掉IDEA的警告!

相关文章
|
1月前
|
Java Spring 容器
@Resource 和 @Autowired 介绍 为什么使用 @Autowired 会报错,改成@Resource 就对了
本文介绍了`@Autowired`和`@Resource`两种依赖注入注解的区别及使用场景,并解释了为什么在某些情况下使用`@Autowired`会导致错误,而改成`@Resource`则可以解决问题。
161 0
|
6月前
|
Java Spring 容器
@Resource 和 @Autowired区别是什么?
@Resource 和 @Autowired区别是什么?
|
6月前
|
Java Spring
spring注解@Autowired、@Resource说明
spring注解@Autowired、@Resource说明
|
Java 编译器 Spring
Spring框架@Autowired和@Resource到底有什么区别
Spring框架@Autowired和@Resource到底有什么区别
518 0
|
Java 测试技术 开发者
Spring探索丨既生@Resource,何生@Autowired?
读了本文你将会了解到:1、@Resource和@Autowired来源;2、Spring官方为什么会支持这两个功能如此相似的注解?3、为什么@Autowired属性注入的时候Idea会曝出黄色的警告?4、@Resource和@Autowired推荐用法
529 6
Spring探索丨既生@Resource,何生@Autowired?
|
Java Spring
解析Spring注解:@Resource与@Autowired的区别
在Spring框架中,依赖注入是实现松耦合、可维护性高的应用的重要方式之一。`@Resource`和`@Autowired`是两个常用的注解,用于实现依赖注入。然而,它们在用法和特点上有所不同。本文将详细介绍`@Resource`和`@Autowired`之间的区别,以及在Spring应用中的应用场景。
304 0
|
Java Spring
SpringBoot 中- HandlerInterceptor 中 @Autowired 和 @Resource 为空
SpringBoot 中- HandlerInterceptor 中 @Autowired 和 @Resource 为空
113 0
|
Java 测试技术 开发者
Spring探索:既生@Resource,何生@Autowired?
提到Spring依赖注入,大家最先想到应该是@Resource和@Autowired,很多文章只是讲解了功能上的区别,对于Spring为什么要支持两个这么类似的注解却未提到,属于知其然而不知其所以然。不知大家在使用这两个注解的时候有没有想过,@Resource又支持名字又支持类型,还要@Autowired干嘛,难道是Spring官方没事做了?
13737 3
Spring探索:既生@Resource,何生@Autowired?
|
开发框架 Java Spring
@Autowired与@Resource有何区别?
@Autowired与@Resource有何区别?
95 0
|
开发框架 Java Spring
spring注解:@Autowired 和@Resource
spring注解:@Autowired 和@Resource
308 0