Вы можете реализовать интерфейс org.springframework.beans.factory.FactoryBean для объектов, которые сами являются фабриками.
Интерфейс FactoryBean является точкой подключения к логике создания экземпляров IoC-контейнера Spring. Если у вас сложный код инициализации, который лучше выразить на Java, а не на (потенциально) перегруженном XML, вы можете создать свой собственный FactoryBean, написать сложную инициализацию внутри этого класса, а затем подключить свой FactoryBean к контейнеру.
Интерфейс FactoryBean<T> предоставляет три метода:
-
T getObject(): Возвращает экземпляр объекта, который создает эта фабрика. Экземпляр может быть общим, в зависимости от того, возвращает ли эта фабрика объекты-одиночки или объекты-прототипы. -
boolean isSingleton(): Возвращаетtrue, если этотFactoryBeanвозвращает объекты-одиночки, илиfalse- в противном случае. Реализация данном метода по умолчанию возвращаетtrue. -
Class<?> getObjectType(): Возвращает тип объекта, возвращенный методомgetObject(),или null , если тип не известен заранее.
Концепция и интерфейс FactoryBean используются во многих случаях в Spring Framework. Более 50 реализаций интерфейса FactoryBean поставляются в составе самого Spring.
Если нужно запросить у контейнера сам экземпляр FactoryBean, а не созданный им бин, при вызове метода getBean() ApplicationContext префикс id бина обозначается символом амперсанда (&). Так, для данного FactoryBean с id myBean вызов getBean("myBean") для контейнера возвращает результат обработки FactoryBean, тогда как вызов getBean("&myBean") возвращает сам экземпляр FactoryBean.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ