如何从外部XML文件加载spring bean?
示例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>
Spring Boot:
@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);
}
}
我尝试了不同的方法,但都没有效果。如果我在我的jar中包含xml,我不知道如何在jar外部覆盖它。否则测试无法启动上下文。我应该如何设置@ImportResource({"file:config/config.xml"})
以便应用程序可以找到xml和所有测试通过?
我需要在外部配置Target bean。
答案 0 :(得分:0)
由于我没有找到答案,我提出了以下想法:
我的主要课程中有一个@Configuration
课程,其@Profile("default")
和@ImportResource("file:/config/beans.xml")
以及我的测试课程中的另一个@Configuration
课程与@Profile("!default")
和{{1} }。
完整POC请参阅https://gitlab.com/Sheldor5/configurable-spring-boot-sample