Spring IoC контейнер: обзор Bean, создание экземпляра Bean

Определение бина (bean definition) - это, по сути, рецепт создания одного или нескольких объектов. Контейнер просматривает рецепт для именованного компонента при запросе и использует метаданные конфигурации, инкапсулированные этим определением компонента, для создания (или получения) реального объекта.

Если вы используете метаданные конфигурации на основе XML, вы указываете тип (или класс) объекта, для которого создается экземпляр, в атрибуте класса элемента <bean/>. Этот атрибут класса (который внутри является свойством Class в экземпляре BeanDefinition) обычно является обязательным. Свойство Class можно использовать одним из двух способов:

  • Как правило, чтобы указать класс bean-компонента, который будет создан в случае, когда сам контейнер непосредственно создает bean-компонент, вызывая его конструктор рефлексивно, что несколько эквивалентно коду Java с оператором new.
  • Чтобы указать фактический класс, содержащий метод статической фабрики, который вызывается для создания объекта, в менее распространенном случае, когда контейнер вызывает метод статической фабрики для класса для создания компонента. Тип объекта, возвращаемый при вызове статического метода фабрики, может быть тем же классом или другим классом целиком.

Внутренние имена классов

Если вы хотите настроить определение бина для статического вложенного класса, вы должны использовать двоичное имя вложенного класса.

Например, если у вас есть класс с именем SomeThing в пакете com.example, а у этого класса SomeThing есть статический вложенный класс с именем OtherThing, значением атрибута класса в определении компонента будет com.example.SomeThing$OtherThing.

Обратите внимание на использование символа $ в имени для отделения имени вложенного класса от имени внешнего класса.


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


Комментарии

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

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

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

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