1. 程式人生 > >@Autowired @Resource @Inject 自動註入

@Autowired @Resource @Inject 自動註入

pan pid ati 需要 context source resource 功能 vax

一、@AutoWired ( spring 的註解 )自動註入

/**
 * @Autowired:
 *         默認按照 Student 類型去容器中找對應的組件:applicationContext.getBean(Student.class);
 *         如果找到多個相同類型的組件,再將 student 這個屬性名作為 id 去容器中找對應組件 applicationContext.getBean("student");
 *         required = false,容器中如果沒有該組件,就為 null
 * @Qualifier:
 *         指定需要裝配的組件 id,而不是使用 student 這個屬性名作為 id
 
*/ @Qualifier("student2") @Autowired(required = false) private Student student;

二、@Resource ( JSR250 規範的註解 )

/**
 * @Resource:
 *         默認按照組件名 student 作為 id 去容器中找對應的屬性
 *         使用 name = "student2" 指定 id
*     沒有 required = false 功能  
*/ @Resource(name = "student2") private Student student;

三、@Inject ( JSR330 規範 ) 和 @AutoWired 功能一樣。但是沒有 required = false 功能

  導入 jar

<!-- https://mvnrepository.com/artifact/javax.inject/javax.inject -->
<dependency>
    <groupId>javax.inject</groupId>
    <artifactId>javax.inject</artifactId>
    <version>1</version>
</dependency>
@Inject
private Student student;

@Autowired @Resource @Inject 自動註入