• @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 更为常见。

  • 相关阅读:
    树莓派无桌面配置WiFi连接
    InnoDB 事务
    MySQL原理(九):表分区和分库分表
    背景的样式(雪碧图)
    算法与数据结构 --- 线性表 --- 顺序表示和实现
    西门子PLC1200与fanuc机器人进行profibus通讯
    1-丁基-3-甲基咪唑氯化锌([BMIM][Zn2Cl5])离子液体
    【Java编程】JavaSE基础总结(一)
    夜莺n9ev5配置grafana9.1.1
    智能四向穿梭车机器人系统库架一体解决方案|四向车密集型智能自动化立体库立体货架供应
  • 原文地址:https://blog.csdn.net/qq_44444470/article/details/134458983