java的@Inject注解

本文详细介绍了JakartaEE平台中的Jakarta.inject.Inject注解的用法,包括其在构造器、方法和属性上的应用,以及访问修饰符的影响。还探讨了可注入成员的限制和实例中的行为规则。
摘要由CSDN通过智能技术生成

https://jakarta.ee/specifications/platform/9/apidocs/jakarta/inject/inject

  • jakarta.inject.Inject注解用来声明可注入的构造器、方法、和属性。可以应用到静态的成员、或者实例成员。一个可注入的成员可以具有任意的访问修饰符(private, package-private, protected, public)。构造器首先被注入,紧接着是属性,然后是方法。父类中的属性和方法比子类中的属性和方法先注入。在同一个类中,注入的多个属性的顺序没有明确,注入的多个方法的顺序也没有明确。
  • 可注入的构造器用@Inject注解,并且接受一个或多个作为参数的依赖。在一个类中,@Inject至多只能用到一个构造器上。语法:
    在这里插入图片描述
  • 如果一个类中除了public、并且不带参数的构造器外,没有其它的构造器,那么@Inject是可选的,这允许注入器调用默认的构造器:
    在这里插入图片描述
  • 可注入的属性:1)以@Inject注解。2)不是final的。3)可以具有任何其它有效的名字。语法:
    在这里插入图片描述
  • 可注入的方法:1)以@Inject注解。2)不是abstract的。3)没有声明任何它本身的类型参数。4)可以返回一个结果。5)可以具有任何其它有效的名字。6)可以接受0个或多个作为依赖的参数。语法:
    在这里插入图片描述

示例:

   public class Car {
     // Injectable constructor
     @Inject public Car(Engine engine) { ... }

     // Injectable field
     @Inject private Provider<Seat> seatProvider;

     // Injectable package-private method
     @Inject void install(Windshield windshield, Trunk trunk) { ... }
   }
  • 如果一个被@Inject的方法覆盖了另外一个被@Inject的方法,那么针对每个实例的每个注入请求,方法只会被注入一次。
  • 尽管可注入的成员可以具有任何的访问修饰符(包含private),但平台或者注入器的限制(例如安全限制、或者少反射的支持)可能不会注入non-public成员。
  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值