Как я могу загрузить свои Spring beans из внешнего XML-файла?
Пример xml:
<bean class = "com.mycompany.Config">
<property name = "targets">
<list>
<bean class = "com.mycompany.Target">
<property name = "url">http://bla</property>
<property name = "authentication">
<bean class = "com.mycompany.Auth">
<property name = "type" value = "basic"/>
<property name = "user" value = "user1"/>
<property name = "pass" value = "asdf"/>
</bean>
</property>
</bean>
<bean class = "com.mycompany.Target">
<property name = "url">http://otherbla</property>
<property name = "authentication">
<bean class = "com.mycompany.Auth">
<property name = "type" value = "basic"/>
<property name = "user" value = "user2"/>
<property name = "pass" value = "start123"/>
</bean>
</property>
</bean>
[as many Target beans as I want]
</list>
</property>
</bean>
Весенняя загрузка:
@SpringBootApplication(scanBasePackages = {"com.mycompany"})
@ImportResource({"file:config/config.xml"})
public class Application {
/**
* Spring Boot Startpoint.
*
* @param args Commandline arguments
*/
public static void main(final String[] args) {
ConfigurableApplicationContext ctx = SpringApplication.run(Application.class, args);
}
}
Я пробовал разные способы, но ни один из них не работал. Если я включу xml в свою банку, я понятия не имею, как я могу перезаписать ее извне ВНЕ баночки. В противном случае тесты не смогут запустить контекст. Как мне настроить @ImportResource({"file:config/config.xml"}), чтобы приложение могло найти xml И все тесты прошли?
Мне нужно внешне настроить целевой компонент.
@pvpkiran папка конфигурации - это папка конфигурации весенней загрузки, где находится application.properties. с "classpath" файл в файловой системе НЕ загружается и не перезаписывает файл в JAR ...
Поскольку я не нашел ответа, мне пришла в голову следующая идея:
Один класс @Configuration в моих основных классах с @Profile("default") и @ImportResource("file:/config/beans.xml"), а другой класс @Configuration в моих тестовых классах с @Profile("!default") и @ImportResource("classpath*:test-beans.xml").
Полный POC см. https://gitlab.com/Sheldor5/configurable-spring-boot-sample
попробуйте
@ImportResource({"classpath*:config/config.xml"}). Где эта папка с конфигами? под ресурсами?