Spring IoC контейнер: точки расширения контейнера, настройка логики реализации с помощью FactoryBean

Вы можете реализовать интерфейс org.springframework.beans.factory.FactoryBean для объектов, которые сами являются фабриками.

Интерфейс FactoryBean - это точка подключения к логике создания контейнера Spring IoC. Если у вас есть сложный код инициализации, который лучше выражен в Java, в отличие от (возможно) многословного объема XML, вы можете создать свой собственный FactoryBean, записать сложную инициализацию внутри этого класса, а затем вставить свой собственный FactoryBean в контейнер.

Интерфейс FactoryBean предоставляет три метода:

  • Object getObject(): возвращает экземпляр объекта, который создает эта фабрика. Экземпляр может быть общим, в зависимости от того, возвращает ли эта фабрика синглтоны или прототипы.
  • boolean isSingleton(): возвращает true, если этот FactoryBean возвращает синглтоны или false в противном случае.
  • Class getObjectType(): возвращает тип объекта, возвращаемый методом getObject(), или значение null, если тип заранее не известен.

Концепция и интерфейс FactoryBean используются в Spring Framework во многих местах. Более 50 реализаций интерфейса FactoryBean поставляются с самим Spring.

Когда вам нужно запросить у контейнера сам фактический экземпляр FactoryBean вместо создаваемого им бина, перед вызовом метода getBean() объекта ApplicationContext перед идентификатором бина вводится символ амперсанда (&). Таким образом, для данного FactoryBean с идентификатором myBean вызов getBean("myBean") для контейнера возвращает продукт FactoryBean, тогда как вызов getBean("&myBean") возвращает сам экземпляр FactoryBean.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки