• @Autowired注解和@Resource注解的区别


    @Autowired 和 @Resource 都是用于依赖注入(Dependency Injection)的注解,

    区别如下:

    1、来源不同:

    @Autowired 是Spring框架的注解,用于自动装配bean。
    @Resource 是Java EE(Java Platform, Enterprise Edition)规范的一部分,提供了一种在Java EE环境中进行依赖注入的方式。在Java SE环境中也可以使用,但需要引入相应的依赖。

    2、注入方式不同:

    @Autowired 可以用在字段、构造方法和方法上,通过类型匹配进行注入。如果有多个匹配的bean,可以使用@Qualifier注解指定具体的bean。
    @Resource 主要是通过按照名称进行注入,可以指定name属性来指定bean的名称。如果没有指定name属性,它会按照默认的规则(先按照名称查找,再按照类型查找)来选择注入的bean。

    3、兼容性不一样:

    @Autowired 是Spring特有的注解,因此在非Spring环境中无法使用。
    @Resource 是Java EE规范的一部分,因此在Java EE环境中可以使用,同时也可以在Spring中使用。

    4、可选性上有些区别:

    @Autowired 注解的required属性默认为true,表示被注入的bean必须存在,否则会抛出异常。可以通过设置required = false来使注入变为可选。
    @Resource 注解的required属性默认为true,表示被注入的bean必须存在,可以通过设置required = false来使注入变为可选。

    示例:

    // 使用@Autowired注解
    @Component
    public class MyComponent {
        @Autowired
        private MyService myService;
        
        // constructor, methods
    }
    
    // 使用@Resource注解
    @Component
    public class MyComponent {
        @Resource(name = "myService")
        private MyService myService;
        
        // constructor, methods
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    总结:

    @Autowired 是Spring提供的一种依赖注入方式,而@Resource 是Java EE规范提供的方式,它们在使用上有一些细微的差别。在Spring应用中,通常使用@Autowired 更为常见。

  • 相关阅读:
    知识点2--Docker的安装
    大数据相关
    House of einherjar
    docker&Kubernetes入门篇(二)
    Java 大厂面试 —— 常见集合篇 List HashMap 红黑树
    xctf very_easy_sql
    C++ 类和对象【上篇】(类的定义+类对象模型+this指针)
    甘特图制定项目计划,提高项目管理效率
    有关Java发送邮件信息(支持附件、html文件模板发送)
    大语言模型LLM中Transformer模型的调用过程与步骤
  • 原文地址:https://blog.csdn.net/qq_44444470/article/details/134458983