1.使用@Inject和@Named進行依賴注入
(1) Spring提供了對JSR 330標準註解的支援,因此我們也可以使用JSR 330標準註解來進行依賴注入,不過,在此之前,我們得先使用maven新增相關依賴,如下
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
(2) JSR 330標準註解提供了@Inject註解進行依賴注入,它的作用同@Autowired,我們可以將它用於變數,方法或建構函式引數上,如下
@Component
public class ExampleA {
//使用@Inject註解,來進行依賴項的注入,它的作用跟@Autowired是完全一樣的,只不過它是java提供的註解,Spring對其作了實現
@Inject
private ExampleB exampleB;
private ExampleC exampleC;
@Inject
public ExampleA(ExampleC exampleC) {
this.exampleC = exampleC;
}
}
(3) @Named註解的作用同@Qualifier註解,也是指定候選的bean的名稱,排除其他依賴項的干擾
@Component
public class ExampleA {
//使用@Named註解標識候選bean的名稱,如果容器中存在多個ExampleB例項,則選擇其中bean的名稱為exampleB的那個bean進行注入
@Inject
@Named("exampleB")
private ExampleB exampleB;
}
2.@Named註解與@ManagedBean註解
(1) @Named註解與JSR 250中的註解@ManagedBean可以用來替換掉@Component註解,如下
//使用@Named註解定義一個bean,沒錯,@Named註解還可用在類上,用於宣告一個bean,下面這個例子等同於@Component("aaa")
@Named("aaa")
public class ExampleA { }
//此外,我們還可以用@ManagedBean註解來宣告一個bean
@ManagedBean("bbb")
public class ExampleB { }
//開啟註解掃描,則Spring也會把被@Named註解與@ManagedBean註解標註的bean新增至容器中
@Configuration
@ComponentScan(basePackages = "cn.example.spring.boke")
public class Config { }
(2) @Component註解可以組合衍生出其他註解,如@Service,@Controller註解等,而@Named註解與@ManagedBean註解不具備這一功能