Spring自带的@Autowired的缺省情况等价于JSR-330的@Inject注解; Spring自带的@Qualifier的缺省的根据Bean名字注入情况等价于JSR-330的@Named注解; Spring自带的@Qualifier的扩展@Qualifier限定描述符注解情况等价于JSR-330的@Qualifier注解。

用过Spring框架的我们都知道,每当生成依赖注入的时候,我们都必须生成相应类的set方法,而且要在set方法上面写上@Autowired,才能实现依赖注入,如下:

package com.kaishengit.web;  
  
import com.kaishengit.service.ProjectService;  
import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.stereotype.Controller;  
  
@Controller  
public class FolderController {  
    private ProjectService projectService;  
  
    //set  
    @Autowired  
    public void setProjectService(ProjectService projectService) {  
        this.projectService = projectService;  
    }  
}

每次都要生成相应的set方法感觉好麻烦,现在如果我们使用javax.inject.jar,只需要在相应类的属性上面加上@Inject,如下代码:

package com.kaishengit.web;  
  
import com.kaishengit.service.ProjectService;  
import org.springframework.stereotype.Controller;  
  
import javax.inject.Inject;  
  
@Controller  
public class FolderController {  
    @Inject  
    private ProjectService projectService;  
  
  
}

Maven引入:

<!-- JSR-330依赖注入 -->
<dependency>
	<groupId>javax.inject</groupId>
	<artifactId>javax.inject</artifactId>
	<version>1</version>
</dependency>

引入参考资料:

@Inject

@Inject支持构造函数、方法和字段注解,也可能使用于静态实例成员。可注解成员可以是任意修饰符(private,package-private,protected,public)。注入顺序:构造函数、字段,然后是方法。父类的字段和方法注入优先于子类的字段和方法,同一类中的字段和方法是没有顺序的。

@Inject注解的构造函数可以是无参或多个参数的构造函数。@Inject每个类中最多注解一个构造函数。

参考资料地址:

资料1:https://www.cnblogs.com/langtianya/p/4702757.html(推荐)

资料2:http://www.xuetimes.com/archives/840

 

标签: Java, 依赖注入, Java依赖注入, javax.inject, inject

添加新评论