spring in action3-02:注释注入

public class KnifeJuggler {

    /**
     * spring注解:
     * 1.@AutoWired--spring提供-@Qualifier
     * 2.@Inject--JSR330--@Named
     * 3.@Resource--JSR250
     */
    private Set<Knife> knives;
    
    @Inject
    public KnifeJuggler(Provider<Knife> knifeProvider) {
        knives=new HashSet<Knife>();
        for(int i=0;i<5;i++){
            knives.add(knifeProvider.get());
        }
    }
    
    @Inject
    @Named("guitar")
    private Instrument instrument;
    
    //@Value("Bill Jean")//value用于注入基础类型
    @Value("#{systemProperties.mySong}")//支持SpEl表达式
    private String song;
    
    //将该方法返回的对象转换为spring bean,其他调用该方法时会
    //先到spring容器中招,而不是执行该方法
    @Bean
    private Instrument duke(){
        return new Piano();
    }
}
/////////////////////////////////////////
public class Instrumentalist implements Performer{
    
    public Instrumentalist() {
    }
    
    public void perform() throws PerformanceException {
        System.out.println("Playing song: "+song+":");
        instrument.play();
    }
    
    @Autowired(required=false)
    @Qualifier("Bill Jean")//当出现多个满足条件的bean时,此注解保证指定一个注入
    private String song;
}
////////////////////////////////////////
@Target({ElementType.FIELD,ElementType.PARAMETER,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface StringedInstrument {

    /**自定义一个限定器注解,使用Qualifier作为源注解*/
}



你可能感兴趣的:(spring in action3-02:注释注入)