Java 高级Spring@Qualifier
我有:Java 高级Spring@Qualifier,java,spring,code-injection,autowired,Java,Spring,Code Injection,Autowired,我有: @Component class MyDecorator{ private Cache cache; /* some wrapped methods like get put remove */ } 是否可以在具有不同缓存的不同位置自动连线MyDecorator 我可以这样配置XML: 但是,如果不添加xml配置,只添加注释,还有更优雅的方法吗 正确的代码应该是 @Configuration public class AppConfig { @Be
@Component
class MyDecorator{
private Cache cache;
/*
some wrapped methods like get put remove
*/
}
是否可以在具有不同缓存的不同位置自动连线MyDecorator
我可以这样配置XML:
但是,如果不添加xml配置,只添加注释,还有更优雅的方法吗
正确的代码应该是
@Configuration
public class AppConfig {
@Bean
public MyAdapter adaptedCache2() {
return new MyAdapter (cache1);
}
@Bean
public MyAdapter adaptedCache2() {
return new MyAdapter (cache2);
}}
根据将生成两个bean adaptedCache1和adaptedCache2
现在我可以了
通过Java配置(Spring 3.1),使用限定符adaptedCache1和adaptedCache2自动连接这些bean,您可以编写:
@Bean
public MyDecorator decoratedCache1() {
return new MyDecorator(cache1);
}
@Bean
public MyDecorator decoratedCache2() {
return new MyDecorator(cache2);
}
当然,在这种情况下,MyDecorator
不需要@组件
:
@Component
class MyDecorator{
private final Cache cache;
public MyDecorator(Cache cache) {
this.cache = cache;
}
}
正如我在上面的例子中所理解的,我有MyDecorator必须扩展缓存,我不确定它是否好idea@Diyko:装饰图案不是这样工作的吗?它扩展/实现了与包装对象相同的接口?否则它就是一个适配器…看来我明白你的意思了