2015-02-08 4 views
2

Я понял, что повторение экземпляра весеннего боба области @Scope(proxyMode = ScopedProxyMode.TARGET_CLASS, value = "prototype"), кажется, вызывает новый экземпляр компонента, когда тот же экземпляр получает ссылку.Как использовать сеттеры весной

Например:

@Component 
@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS, value = "prototype") 
class Item { 

    ..... 
} 

@Component 
@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS, value = "prototype") 
class A { 

    private Item item; 

    public void setItem(Item item) { 
     this.item = item; 
    } 

    public void method() { 
     item.doSomething(); 
    } 

} 

@Component 
@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS, value = "prototype") 
class B { 

    @Autowired 
    private A a; 

    @Autowired 
    private Item item; 

    void bMethod() { 
     a.setItem(item); 
     a.method(); 
    } 
} 

Экземпляр A в a.setItem(item); кажется, отличается от такового в a.method();, тем самым делая невозможное, чтобы использовать методы доступа в бобах с охватом @Scope(proxyMode = ScopedProxyMode.TARGET_CLASS, value = "prototype").

Является ли это ожидаемым поведением? У меня отсутствует понимание относительно использования @Scope(proxyMode = ScopedProxyMode.TARGET_CLASS, value = "prototype")?

ответ

2

Избавьтесь от proxyMode на фасоль A. С proxyModeTARGET_CLASS, bean фактически является прокси-сервером, который делегирует вызов любого метода новому экземпляру.

Смежные вопросы