Java依赖注入相关注解简述

Java开发中常用的依赖注入相关的注解主要包含有以下这些(已注明原始定义位置):

JSR-250标准注解

  • @Resource(Spring 支持)
  • @PostConstruct、@PreDestroy(Spring 支持)


JSR-330 (javax.inject)

  • @Inject(Spring 支持)
  • @Qualifer(Spring 支持)
  • @Named(Spring 支持)
  • @Scope, @Singleton(Spring 支持)


Spring Framework

  • @Autowired
  • @Required
  • @Qualifier
  • @Component、@Service、@Controller、@Repository

    

    注解@Resource的作用相当于Spring中的@Autowired,区别在于@Autowired按byType自动注入,而@Resource默认按 byName自动注入。

    Spring中的@Autowired可以使用@Inject代替,Maven依赖如下:

        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
        </dependency>

    @Resource与@Autowired、@Inject的详细区别:

        -- @Autowired、@Inject 注解

            默认autowired by type,可以通过@Qualifier 显式指定 autowired by qualifier name(集合类时有些特殊)。如果 autowired by type 失败(找不到或者找到多个实现),则退化为autowired by field name。

        -- @Resource注解

            默认 autowired by field name,如果 autowired by field name失败,会退化为 autowired by type,可以 通过@Qualifier 显式指定 autowired by qualifier name,如果 autowired by qualifier name失败,会退化为 autowired by field name。但是这时候如果 autowired by field name失败,就不会再退化为autowired by type了。

    @Required注解

        适用于bean属性的setter方法。

    @Component、@Service、@Controller、@Repository

        用于声明bean组件,其中@Component是其余几个注解的原型

    @Named

        即可用作类似@Component,也可以用作类似@Qualifier注解的作用。

    当使用标准注释时,重要的是要知道一些重要的特性是不可用的,具体情况见下表:Spring Framework 注解 vs JSR-330标准注解(来源:-- Spring Framework 5.06官方文档)。


(-- Spring Framework 5.06)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值