用于限定注入bean的特殊用法
1.定义注解
package tju.HclEurekaServer.anno;
import java.lang.annotation.Retention;
import java.lang.annotation.*;
import org.springframework.beans.factory.annotation.Qualifier;
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface MyLoadBalanced {
}
2.配置bean
package tju.HclEurekaServer.controller;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import tju.HclEurekaServer.UserInfo;
import tju.HclEurekaServer.anno.MyLoadBalanced;
@RestController
public class MyController1 {
@Bean
//@MyLoadBalanced
UserInfo getUserInfo()
{
UserInfo u=new UserInfo();
u.setPassword("pwd");
u.setUsername("yonghu");
return u;
}
@Bean
@MyLoadBalanced
UserInfo getUserInfo2()
{
UserInfo u=new UserInfo();
u.setPassword("amadeus");
u.setUsername("liu");
return u;
}
@Bean
@MyLoadBalanced
UserInfo getUserInfo3()
{
UserInfo u=new UserInfo();
u.setPassword("david");
u.setUsername("beckham");
return u;
}
@Bean
@MyLoadBalanced
UserInfo getUserInfo4()
{
UserInfo u=new UserInfo();
u.setPassword("ryn");
u.setUsername("giggs");
return u;
}
@Bean
@MyLoadBalanced
UserInfo getUserInfo5()
{
UserInfo u=new UserInfo();
u.setPassword("crysti");
u.setUsername("ronaldo");
return u;
}
@RequestMapping("/hello")
public String test()
{
return "hello,wd";
}
}
- 注入 bean
package tju.HclEurekaServer.config;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import tju.HclEurekaServer.UserInfo;
import tju.HclEurekaServer.anno.MyLoadBalanced;
@Configuration
public class MyConfig {
@Autowired(required=false)
@MyLoadBalanced
private List<UserInfo> userInfoList=null;
@Bean
public String tt()
{
for(UserInfo u:userInfoList)
{
System.out.println(u);
}
return "good";
}
}
注入ben时指定了注解,因此,在定义bean时,只有包含上述注解的bean才会被注入