首页 > 编程知识 正文

Inject 注解初识,初识识慧在线阅读

时间:2023-05-03 21:59:21 阅读:258421 作者:1919

注解以前学习Java的时候也学过,是在学习Spring的时候,但是@Inject 注解还真是头一次见乘着休息时间赶紧学习一下。正好手里有有本书《Java程序员修炼之道》,书中对@Inject 注解讲解的比较清楚,所以来和大家分享一下。

@Inject 注解可以出现在三种类成员之前,表示该成员需要注入依赖项。按运行时的处理顺序这三种成员类型是:

(1)构造方法

(2)方法

(3)属性

在构造方法上使用 @Inject 时,其参数在运行时由配置好的IoC容器提供。比如,在下面的代码中,运行时调用MurmurMessage类的构造方法时,IoC 容器会注入其参数 Header 和Content 对象。

@Injectpublic MurmurMessage(Header header, Content content){ this.headr = header; this.content = content;}

规范中规定向构造方法注入的参数数量是0个或多个,所以在不含参数的构造方法上使用 @Inject 注解也是合法的。(注意:因为JRE无法决定构造方法注入的优先级,所以规范中规定类中只能有一个构造方法带@Inject注解)

也可以用@Inject注解方法,与构造方法一样,运行时可注入的参数数量为0个或多个。但使用参数注入的方法不能声明为抽象方法也不能声明其自身的类型参数。下面这段代码在set方法前使用@Inject,这是注入可选属性的常用技术。

@Injectpublic void setContent(Content concent){ this.content = content;}

向方法中注入参数的技术对于服务类方法来说非常有用,其所需的资源可以作为参数注入,比如向查询数据的服务方法中注入数据访问对象(Dao)。

也可以直接在属性上注入(只要它们不是final),虽然这样做简单至接,但是不提倡这样做,因为这样做会让单元测试更加困难。直接注入的语法也很简单。

public class MurmurMessager{ @Inject private MurmurMessage murmurMessage; ...}

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。