Spring IoC контейнер: Java конфигурация, объединение конфигурации Java и XML, @Configuration класс ориентированное использование XML с @ImportResource

В приложениях, где классы @Configuration являются основным механизмом настройки контейнера, по-прежнему, вероятно, необходимо использовать хотя бы некоторый XML. В этих сценариях вы можете использовать @ImportResource и определять столько XML, сколько вам нужно. Таким образом достигается "ориентированный на Java" подход к настройке контейнера и сводится к минимуму XML. В следующем примере (который включает класс конфигурации, XML-файл, определяющий bean-компонент, файл свойств и основной класс) показано, как использовать аннотацию @ImportResource для достижения "Java-ориентированной" конфигурации, которая использует XML по мере необходимости:

Java

@Configuration
@ImportResource("classpath:/com/acme/properties-config.xml")
public class AppConfig {

    @Value("${jdbc.url}")
    private String url;

    @Value("${jdbc.username}")
    private String username;

    @Value("${jdbc.password}")
    private String password;

    @Bean
    public DataSource dataSource() {
        return new DriverManagerDataSource(url, username, password);
    }
}

Kotlin

@Configuration
@ImportResource("classpath:/com/acme/properties-config.xml")
class AppConfig {

    @Value("\${jdbc.url}")
    private lateinit var url: String

    @Value("\${jdbc.username}")
    private lateinit var username: String

    @Value("\${jdbc.password}")
    private lateinit var password: String

    @Bean
    fun dataSource(): DataSource {
        return DriverManagerDataSource(url, username, password)
    }
}

properties-config.xml

<beans>
    <context:property-placeholder location="classpath:/com/acme/jdbc.properties"/>
</beans>

jdbc.properties
jdbc.url=jdbc:hsqldb:hsql://localhost/xdb
jdbc.username=sa
jdbc.password=

Java

public static void main(String[] args) {
    ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);
    TransferService transferService = ctx.getBean(TransferService.class);
    // ...
}

Kotlin

import org.springframework.beans.factory.getBean

fun main() {
    val ctx = AnnotationConfigApplicationContext(AppConfig::class.java)
    val transferService = ctx.getBean<TransferService>()
    // ...
}


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


Комментарии

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

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

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

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