Код: Выделить всё
@Autowired
private ApplicationContext appCtx;
public void onRequest(Request request) {
//request is already validated
String name = request.getParameter("name");
Thing thing = appCtx.getBean(Thing.class, name);
//System.out.println(thing.getName()); //prints name
}
< /code>
Где класс вещи определяется следующим образом: < /p>
public class Thing {
private final String name;
@Autowired
private SomeComponent someComponent;
@Autowired
private AnotherComponent anotherComponent;
public Thing(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
Этот код отлично работает с Spring XML Config, например: < /p>
< /code>
Как мне добиться того же самого с конфигурацией Java? Следующее не работает с помощью Spring 3.x: < /p>
@Bean
@Scope("prototype")
public Thing thing(String name) {
return new Thing(name);
}
< /code>
Теперь я мог < /em> создать фабрику, например ,::
public interface ThingFactory {
public Thing createThing(String name);
}
< /code>
Но что побеждает всю точку использования пружины, чтобы заменить сервицелокатор и шаблон заводской конструкции < /em>, что было бы идеальным для этого случая использования. Интерфейс < /li>
Определение заводской реализации < /li>
Написание тестов для заводской реализации < /li>
< /ul>
Это тонна работы (относительно говоря) для чего -то столь тривиального, что пружина уже поддерживает xml.>
Подробнее здесь: https://stackoverflow.com/questions/221 ... ntime-argu