我有需要迁移到SpringBoot2的代码。问题是,xml中有两个bean定义,其中一个必须根据main方法中arg的值进行注入,因此没有使用@ImportResource注解来注入xml。
之前使用的内容:
ApplicationContext context = new SpringApplication(App.class,"some-xml-that-will-change-based-on-args[0]-value.xml").run(args);
这在SpringBoot2中不再有效,因为构造函数参数已更改:
public SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources) {
}
我尝试过的方法: i.尝试使用SpringApplicationBuilder,但它没有注入xml。
发布于 2021-11-15 23:08:32
我不太了解你的环境,但是你应该能够这样初始化你的应用程序:
ApplicationContextFactory applicationContextFactory =
ApplicationContextFactory.of(() -> new ClassPathXmlApplicationContext("some-xml.xml"));
SpringApplication springApplication = new SpringApplicationBuilder(DemoApplication.class)
.contextFactory(applicationContextFactory).application();
springApplication.run(args);
如果您的应用程序上下文XML文件不在类路径中,那么您还可以看看FileSystemXmlApplicationContext。对于您的用例,您还可以考虑实现定制的ApplicationContextFactories,它负责加载正确的XML文件。
https://stackoverflow.com/questions/69979290
复制相似问题