用于限定注入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";
}

}
  1. 注入 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才会被注入