【问题标题】:What is @Inject for in Kotlin?Kotlin 中的 @Inject 是什么?
【发布时间】:2021-12-25 06:22:10
【问题描述】:

我已经阅读了注释的内容,但我有点笨,所以无法正确理解

标识可注入的构造函数、方法和字段。可能适用于静态成员和实例成员。可注入成员可以具有任何访问修饰符(private、package-private、protected、public)。首先注入构造函数,然后是字段,然后是方法。超类中的字段和方法在子类中的之前注入。未指定同一类中的字段之间和方法之间的注入顺序。

你能解释一下@Inject 的用途吗?如果可以用现实生活中的一些不那么抽象的东西进行类比

【问题讨论】:

    标签: kotlin inject


    【解决方案1】:

    @Inject 是一个 Java 注释,用于描述作为 Java EE(现在称为 Jakarta EE)一部分的类的依赖关系。它是 CDI(上下文和依赖注入)的一部分,CDI 是 Java EE 6 及更高版本中包含的标准依赖注入框架。

    CDI 最臭名昭著的特性是它允许您在客户端类中注入依赖项。我所说的依赖是什么意思?这基本上是您的班级需要做的任何事情。

    让我给你一个例子,这样更容易理解。想象一下,您有一个类NotificationService,它应该以不同的格式(在本例中为电子邮件和短信)向人们发送通知。为此,您很可能希望将发送通知的实际行为委托给能够处理每种格式的专用类(假设EmailSenderSmsSender)。 @Inject 允许您做的是在 NotificationService 类中定义注入点。在下面的示例中,@Inject 指示 CDI 通过构造函数注入 EmailSenderSmsSender 实现对象。

    public class NotificationService {
        
        private EmailSender emailSender;
        private SmsSender smsSender;
        
        @Inject
        public NotificationService(EmailSender emailSender, SmsSender smsSender) {
            this.emailSender = emailSender;
            this.smsSender = smsSender;
        }
    }
    

    还可以在字段(字段注入)和 setter(setter 注入)中注入类的实例,而不仅仅是在构造函数中描述的那样。

    利用这种依赖注入概念的最著名的 JVM 框架之一是 Spring。

    【讨论】:

    • 非常感谢若昂
    • 不客气 ;)
    猜你喜欢
    • 2016-10-22
    • 1970-01-01
    • 2021-12-27
    • 2022-11-07
    • 1970-01-01
    • 2020-07-12
    • 2018-02-03
    • 2017-12-01
    • 2018-05-15
    相关资源
    最近更新 更多