我有:
@Component
class MyDecorator{
private Cache cache;
/*
some wrapped methods like get put remove
*/
}
是否可以在具有不同缓存的不同位置自动装配MyDecorator
?
我可以像这样配置XML:
<bean id="id1" class="MyDecorator ">
<property name="cache" value="Cache1" />
</bean>
<bean id="id2" class="MyDecorator ">
<property name="cache" value="Cache2" />
</bean>
但是,如果没有添加xml配置,只有注释会有更优雅的方式吗?
正确的代码应该是
@Configuration
public class AppConfig {
@Bean
public MyAdapter adaptedCache2() {
return new MyAdapter (cache1);
}
@Bean
public MyAdapter adaptedCache2() {
return new MyAdapter (cache2);
}}
根据specs将生成两个beansCedatedCache1和adaptedCache2 现在我可以 使用限定符adaptCache1和adaptedCache2
自动装配那些bean答案 0 :(得分:2)
使用Java配置(Spring 3.1),您可以编写:
@Bean
public MyDecorator decoratedCache1() {
return new MyDecorator(cache1);
}
@Bean
public MyDecorator decoratedCache2() {
return new MyDecorator(cache2);
}
当然,在这种情况下,MyDecorator
不需要@Component
:
@Component
class MyDecorator{
private final Cache cache;
public MyDecorator(Cache cache) {
this.cache = cache;
}
}