这个是JavaEE6规范JSR330--DependencyInjectionforJava中的东西,也就是JavaEE的依赖注入。
根据APIdocument上的说明,被@Inject标注的构造、成员字段和方法是可注入的。
其包可以在jcp.org上找到,并可以在这里下载:
https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_JCP-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=dependency_injection-1.0-final-oth-JSpec@CDS-CDS_JCP
用过Spring框架的我们都知道,每当生成依赖注入的时候,我们都必须生成相应类的set方法,而且要在set方法上面写上@Autowired,才能实现依赖注入,如下:
- packagecom.kaishengit.web;
- importcom.kaishengit.service.ProjectService;
- importorg.springframework.beans.factory.annotation.Autowired;
- importorg.springframework.stereotype.Controller;
- @Controller
- publicclassFolderController{
- privateProjectServiceprojectService;
- //set
- @Autowired
- voidsetProjectService(ProjectServiceprojectService){
- this.projectService=projectService;
- }
- }
每次都要生成相应的set方法感觉好麻烦,现在如果我们使用javax.inject.jar,只需要在相应类的属性上面加上@Inject,如下代码:
@Inject
@Inject支持构造函数、方法和字段注解,也可能使用于静态实例成员。可注解成员可以是任意修饰符(private,package-private,protected,public)。注入顺序:构造函数、字段,然后是方法。父类的字段和方法注入优先于子类的字段和方法,同一类中的字段和方法是没有顺序的。
@Inject注解的构造函数可以是无参或多个参数的构造函数。@Inject每个类中最多注解一个构造函数。
在字段注解:
-
@H_403_146@用@Inject注解
在方法上注解:
-
@H_403_146@用@Inject注解
@H_403_146@不能是抽象方法
@H_403_146@不能声明自身参数类型
@H_403_146@可以有返回结果
@H_403_146@拥有一个合法的名称
@H_403_146@可以有0个或多个参数
@InjectMethodModirers ResultType Identifier(FormalParameterList ) Throws MethodBody
[上述翻译:inject的doc文档,翻译不好敬请谅解]
构造函数注解:
- @Inject
- publicHouse(Personowner){
- System.out.println("---这是房屋构造函数---");
- this.owner=owner;
- }
copy