Вам необходимо использовать интерфейс пружины FactoryBean
.
Интерфейс, который будет реализован объектами, используемыми в BeanFactory
, которые сами являются фабриками.Если бин реализует этот интерфейс, он используется в качестве фабрики для объекта, который должен быть представлен, а не непосредственно как экземпляр бина, который будет представлен сам.
Реализуйте интерфейс и объявите для него бин.Например:
@Component
class MyStaticFactoryFactoryBean implements FactoryBean<MyStaticFactory>
{
public MyStaticFactory getObject()
MyStaticFactory.getObject();
}
public Class<?> getObjectType() {
return MyStaticFactory.class;
}
public boolean isSingleton() {
return true;
}
}
Через @Component
и компонентное сканирование, этот класс будет обнаружен.Spring обнаружит, что это FactoryBean
, и выставит объект, который вы возвращаете из getObject
, в виде bean-компонента (синглтона, если вы его укажете).
В качестве альтернативы вы можете указать @Bean
или <bean>
объявление для этого FactoryBean
класса.