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構成を追加せずにもっと優雅な方法はありますか?

正しいコードは

    @Configuration
    public class AppConfig { 
@Bean
    public MyAdapter adaptedCache2() {
        return new MyAdapter (cache1);
    }

    @Bean
    public MyAdapter adaptedCache2() {
        return new MyAdapter (cache2);
    }} 

仕様に従って、adaptedCache1とadaptedCache2の2つのBeanが生成されます。これで、これらのBeanを修飾子adaptedCache1とadaptedCache2で自動配線できます。

4

1 に答える 1

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;
    }

}
于 2012-04-05T12:12:10.253 に答える