[英]@Bean(autowire = Autowire.BY_TYPE) is deprecated. What would be alternative?
[英]using @Qualifier + @Bean(autowire=Autowire.BY_TYPE) in javaConfig
我有一個具有依賴類型的地址的Employee bean。 我正在嘗試在javaConfig中配置自動裝配。 但是得到NoQualifyingBeanException
。
雖然我使用@Qualifier()
注釋如下:
@Configuration
public class MyConfig {
@Bean(name="addr1")
public Address address() {
return new Address("Hello","hi",112233);
}
@Bean(name="address")
public Address addressAgain() {
return new Address("See You","Bi",114422);
}
@Bean(name="emp",autowire=Autowire.BY_TYPE)
@Qualifier("addr1")
public Employee employee() {
Employee e = new Employee();
e.setName("Raghu");
e.setEmpID(111);
//e.setAddress(address());
return e;
}
}
在每個@Bean
方法中指定不同的name
屬性是不夠的。
您應該考慮將其中一個bean標記為@Primary
:
@Primary
@Bean(name = "address")
public Address addressAgain() {
return new Address("See You");
}
並讓其他人不要:
@Bean(name="addr1")
public Address address() {
return new Address("Hello","hi", 112233);
}
請注意,您無需在employee()
方法中添加@Qualifier("addr1")
批注即可自動裝配addr1
bean。
當您通過@Bean
方法設置依賴項時,Spring已經知道您所引用的Address
Bean實例: address()
。
這樣就足夠了:
@Bean(name = "emp", autowire = Autowire.BY_TYPE)
public Employee employee() {
Employee e = new Employee();
e.setName("Raghu");
e.setAddress(address());
return e;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.