2
@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的configs的,只能用註解?
正確的代碼應該是
@Configuration
public class AppConfig {
@Bean
public MyAdapter adaptedCache2() {
return new MyAdapter (cache1);
}
@Bean
public MyAdapter adaptedCache2() {
return new MyAdapter (cache2);
}}
根據specs將產生兩個bean adaptedCache1和adaptedCache2 和現在我可以 自動裝配與限定符adaptedCache1和adaptedCache2
作爲案例瞭解我在上文中MyDecorator必須擴展緩存,我不知道這是否是好主意 – Diyko 2012-04-05 12:20:15
@Diyko:這不就是如何*裝飾*模式的作品?它擴展/實現與包裝對象相同的接口?否則,它是一個*適配器* ... – 2012-04-05 12:22:33
看來我已經得到了你的意思 – Diyko 2012-04-05 12:32:44