Spring IoC контейнер: обзор Bean, именование Beans

Каждый компонент (bean) имеет один или несколько идентификаторов. Эти идентификаторы должны быть уникальными в контейнере, в котором размещается bean. Bean обычно имеет только один идентификатор. Однако если требуется более одного, дополнительные могут рассматриваться как псевдонимы.

В метаданных конфигурации на основе XML вы используете атрибут id, атрибут name или оба для указания идентификаторов компонента. Атрибут id позволяет указать ровно один идентификатор. Обычно эти имена являются буквенно-цифровыми ('myBean', 'someService' и т. д.), но они также могут содержать специальные символы. Если вы хотите ввести другие псевдонимы для компонента, вы также можете указать их в атрибуте name, разделяя их запятой (,), точкой с запятой (;) или пробелом. Как историческое примечание, в версиях до Spring 3.1 атрибут id был определен как тип xsd:ID, который ограничивал возможные символы. Начиная с версии 3.1 он определяется как тип xsd:string. Обратите внимание, что уникальность идентификатора bean-компонента все еще обеспечивается контейнером, но больше не анализаторами XML.

Вы не обязаны указывать имя или идентификатор для компонента. Если вы не предоставите имя или идентификатор явно, контейнер сгенерирует уникальное имя для этого компонента. Однако, если вы хотите ссылаться на этот бин по имени, с помощью элемента ref или поиска в стиле локатора служб, вы должны предоставить имя. Мотивации для того, чтобы не указывать имя, связаны с использованием внутренних компонентов и соавторов автопривязки (autowiring collaborators).

Соглашения об именах бинов

Соглашение заключается в использовании стандартного соглашения Java для имен полей экземпляров при именовании bean-компонентов. То есть имена бинов начинаются со строчной буквы и в camelCase (верблюжьем) стиле. Примеры таких имен включают accountManager, accountService, userDao, loginController и так далее.

Именование bean-компонентов делает вашу конфигурацию проще для чтения и понимания. Кроме того, если вы используете Spring AOP, это очень помогает при применении advice к набору bean-компонентов, связанных по имени.

С помощью сканирования компонентов в пути к классам Spring генерирует имена компонентов для неназванных компонентов, следуя правилам, описанным ранее: по сути, беря простое имя класса и переводя его начальный символ в нижний регистр. Однако в (необычном) особом случае, когда имеется более одного символа, а первый и второй символы в верхнем регистре, оригинальный регистр сохраняется. Это те же правила, которые определены в java.beans.Introspector.decapitalize.


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


Комментарии

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

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

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

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