Mam dwie fasole, Rodzic i Dziecko. Element potomny, który zadeklarowałem jako zakres prototypu.
Chcę, aby nowy obiekt podrzędny był używany do wywoływania metody dowolnego dziecka w klasie nadrzędnej. Na przykład w poniższym przykładzie chcę, aby instrukcja 1 wywoływała metodę sayHi dla różnych obiektów podrzędnych i instrukcji 2 w przypadku różnych obiektów podrzędnych.Fasola oznaczona zakresem prototypu nie działa wiosną
Jednym ze sposobów jest wdrożenie ApplicationContextAware i pobranie nowego obiektu podrzędnego za pomocą context.getBean("")
przed wywołaniem metody dowolnego dziecka. Ale nie chcę tego robić.
Czy jest jakaś inna alternatywa?
@Component
public class Parent{
@Autowired
Child child;
public void sayHello(){
child.sayHi(); -------------- (1)
}
public void sayHello1(){
child.sayHi1(); --------------- (2)
}
}
@Component
@Scope(value=BeanDefinition.SCOPE_PROTOTYPE)
public class Child{
public void sayHi(){
System.out.println("Hi Spring 3.0");
}
public void sayHi1(){
System.out.println("Hi1 Spring 3.0 ");
}
}
Jeśli to konfiguracja xml wtedy użyć metody lookup-metoda, ale to nie jest jeszcze dostępna w adnotacjach, wierzę. http://stackoverflow.com/questions/3891997/how-to-do-spring-lookup-method- injection- with-annotations –