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>()
// ...
}
Читайте также:
- Spring IoC контейнер: Java конфигурация, объединение конфигурации Java и XML
- Spring IoC контейнер: Java конфигурация, композиция конфигураций на основе Java, полностью квалифицированные импортированные бины для простоты навигации
- Spring IoC контейнер: Java конфигурация, условно включать классы @Configuration или @Bean-методы
Комментарии
Отправить комментарий