您的位置:首页 > 文旅 > 旅游 > 网页制作技术基础教程_东易日盛装饰公司招聘_网络媒体软文案例_微信怎么做推广

网页制作技术基础教程_东易日盛装饰公司招聘_网络媒体软文案例_微信怎么做推广

2024/12/21 23:33:02 来源:https://blog.csdn.net/cuishujian_2003/article/details/144520173  浏览:    关键词:网页制作技术基础教程_东易日盛装饰公司招聘_网络媒体软文案例_微信怎么做推广
网页制作技术基础教程_东易日盛装饰公司招聘_网络媒体软文案例_微信怎么做推广

@Resource与@Autowired都是Java中用于依赖注入的注解,它们在Spring/Spring Boot项目中有着广泛的应用。以下是对这两个注解的详细解析:

一、@Resource注解

  1. 来源

    • @Resource是Java EE(Jakarta EE)提供的注解,它来源于JSR-250规范提案,是Java语言规范或标准的一部分。
  2. 工作原理

    • @Resource注解主要通过名称匹配(byName)来注入依赖。如果名称匹配失败,则通过类型匹配(byType)来查找依赖。
    • 在使用@Resource注解时,可以指定name和type属性。name属性指定要注入的bean的名称,而type属性指定要注入的bean的类型。
  3. 使用场景

    • @Resource注解可以用在字段或setter方法上。
    • 当需要按照名称注入依赖时,@Resource注解是一个很好的选择。
  4. 注意事项

    • 如果使用@Resource注解注入的bean没有被提前加载(例如在Spring容器中),则会报错。
    • 在加载时,是根据类名(不包括包名)判断的,如果出现重复的类名会报异常(即使不在同一个包中也会报异常)。

二、@Autowired注解

  1. 来源

    • @Autowired注解是Spring框架提供的注解,用于自动装配bean。
  2. 工作原理

    • @Autowired注解主要通过类型匹配(byType)来注入依赖。
    • 如果Spring容器中找到一个唯一的bean与要注入的类型匹配,则直接注入该bean。
    • 如果存在多个同类型的bean,则Spring会通过字段名或参数名来进一步匹配(也称为byName匹配),或者可以使用@Primary注解来标记一个bean为主要候选者,或者使用@Qualifier注解来指定注入的bean。
  3. 使用场景

    • @Autowired注解可以用在构造器、方法、字段或参数上。
    • 在Spring框架中,依赖注入可以通过多种方式来实现,包括构造器注入、字段注入和方法注入。其中,构造器注入是推荐的方式,因为它可以确保依赖在对象创建时就被注入。
  4. 注意事项

    • 如果在Spring容器中找不到与某个依赖类型匹配的bean实例(或者找到多个但没有明确的优先级),那么Spring将抛出异常,除非将该注解的required属性设置为false。
    • 使用@Autowired注解进行字段注入时,不利于单元测试,因为依赖是通过反射注入的。因此,Spring官方已经不建议这种使用方式。

三、@Resource与@Autowired的区别

  1. 来源不同

    • @Resource是Java EE规范的一部分,适用于任何兼容的Java EE容器。
    • @Autowired是Spring框架提供的注解。
  2. 依赖查找顺序不同

    • @Resource先根据名称查找,如果找不到再根据类型查找。
    • @Autowired先根据类型查找,如果找到多个再根据名称查找。
  3. 支持的参数不同

    • @Autowired只支持设置一个required参数。
    • @Resource支持设置多个参数,包括name和type等。
  4. 依赖注入的支持不同

    • @Autowired支持属性注入、构造方法注入和Setter注入。
    • @Resource只支持属性注入和Setter注入,不支持构造方法注入。
  5. 编译器提示不同

    • 在某些IDE(如IDEA)中,使用@Autowired注入Mapper对象时可能会提示报错信息(尽管程序可以正常执行),而使用@Resource则不会出现此问题。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com