FactoryBean можно использовать для программного создания объектов, для которых может потребоваться сложная логика создания экземпляров.
Однако, кажется, что beans, созданный FactoryBean, не становится spring. Правильно ли это толкование? Если да, есть ли какие-нибудь хорошие обходные пути? Пример короткого кода включен, чтобы проиллюстрировать мою проблему.
ApplicationContext:
<bean id="searcher" class="some.package.SearcherFactory" />
<bean id="service" class="some.package.Service" />
Factory реализация:
public class SearcherFactory implements FactoryBean<Searcher> {
@Override
public Searcher getObject() throws Exception {
return new Searcher(); // not so complex after all ;)
}
@Override
public Class<Searcher> getObjectType() {
return Searcher.class;
}
....
}
Класс, созданный factory:
public class Searcher() {
private Service service;
@Autowired
public void setService(Service service) {
// never invoked
this.service=service;
}
}