Проект для демонстрации на Kotlin https://github.com/cherepakhin/spring_config_k
Аналогичный проект на Java https://github.com/cherepakhin/spring_config
- Настройки Spring beans с помощью xml-файла resources/beans.xml
- Настройки Spring beans с помощью аннотаций @Configuration и @Bean в conf/ConfigFromJava
- Настройка bean из внешнего источника(н.п. базы данных)
- Установки для Java 11
- Примечания
Настройки Spring beans с помощью xml-файла resources/beans.xml.
Определение beans в resources/beans.xml:
<bean id="russianGreeter" class="ru.perm.v.springconfig_k.greeters.RussianGreeter"/>
<bean id="germanyGreeter" class="ru.perm.v.springconfig_k.greeters.GermanyGreeter"/>
<bean id="englishGreeter" class="ru.perm.v.springconfig_k.greeters.EnglishGreeter"/>
<bean id="selectedGreeterService" class="ru.perm.v.springconfig.service.GreeterService">
<property name="greeter" ref="russianGreeter"/>
</bean>
Для импортирования бинов, определенных в beans.xml, создан класс conf/BeansFromXmlConfiguration.kt:
package ru.perm.v.springconfig_k.conf @Configuration @ImportResource("classpath*:beans.xml") class BeansFromXmlConfiguration { }
С помощью аннотаций @Configuration и @Bean в conf/BeansFromCodeConfiguration.kt.
@Configuration class BeansFromCodeConfiguration { /** * for injection use * @Autowired * lateinit var staticBean:String */ @Bean("staticBean") fun getMyStaticBean() = "STATIC_BEAN" } @Bean fun beanOneConfigFromCode() = "BEAN_ONE"
Более подробно в https://github.com/cherepakhin/spring_config_k
Настройка bean из внешнего источника (н.п. базы данных).
Установки для Java 11.
Использована Java 11.
$ echo $JAVA_HOME > /usr/lib/jvm/java-1.11.0-openjdk-amd64
Для установки выполнить:
$ export JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
|
В Idea установить File->Project Structure->Project Settings->Project->SDK
Примечания.
1. Используется Java 11:
$ echo $JAVA_HOME
~/prog/kotlin/spring_config_k
$ export JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
~/prog/kotlin/spring_config_k$ ./gradlew clean test
2. В build.gradle.kts можно использовать переменные из application.yaml. Пример:
tasks.withType<Test>() {
allureConfig
useJUnitPlatform()
systemProperties["PORT"] = properties["port"]
systemProperties["URL"] = properties["url"]
}