Spring IoC контейнер: Java конфигурация, настройка имен, псевдонимов, описаний бинов

Настройка именования бинов

По умолчанию классы конфигурации используют имя метода @Bean в качестве имени полученного компонента. Однако эту функцию можно переопределить атрибутом name, как показано в следующем примере:

Java

@Configuration
public class AppConfig {

    @Bean(name = "myThing")
    public Thing thing() {
        return new Thing();
    }
}

Kotlin

@Configuration
class AppConfig {

    @Bean("myThing")
    fun thing() = Thing()
}

Псевдонимы бинов

Иногда желательно дать одному бину несколько имен, иначе называемых псевдонимами бинов (bean aliasing). Атрибут name аннотации @Bean принимает массив String для этой цели. В следующем примере показано, как установить ряд псевдонимов для компонента:

Java

@Configuration
public class AppConfig {

    @Bean({"dataSource", "subsystemA-dataSource", "subsystemB-dataSource"})
    public DataSource dataSource() {
        // создать экземпляр, 
        // сконфигурировать и вернуть bean-компонент DataSource...
    }
}

Kotlin

@Configuration
class AppConfig {

    @Bean("dataSource", "subsystemA-dataSource", "subsystemB-dataSource")
    fun dataSource(): DataSource {
        // создать экземпляр, 
        // сконфигурировать и вернуть bean-компонент DataSource...
    }
}

Описание бина

Иногда полезно предоставить более подробное текстовое описание компонента. Это может быть особенно полезно, когда бины выставляются (возможно, через JMX) для целей мониторинга.

Чтобы добавить описание в @Bean, вы можете использовать аннотацию @Description, как показано в следующем примере:

Java

@Configuration
public class AppConfig {

    @Bean
    @Description("Предоставляет базовый пример компонента")
    public Thing thing() {
        return new Thing();
    }
}

Kotlin

@Configuration
class AppConfig {

    @Bean
    @Description("Предоставляет базовый пример компонента")
    fun thing() = Thing()
}


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


Комментарии

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

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

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

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