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