我需要将应用程序从spring-boot-1.2.5.RELEASE升级到spring-boot-2.0.0.RELEASE。
我有以下代码:
for (char n : v)
{
int& count = m[n];
count++; // operates on the value that is stored in the map
pair<char, int> p(n, count);
m.insert(p); // ignored because the key already exists
}
@Configuration
@ComponentScan
@EnableAutoConfiguration(exclude = {HibernateJpaAutoConfiguration.class, RedisAutoConfiguration.class})
public class NiceBootApplicationWithoutDB extends AbstractBootApplication {
public static final String APPLICATION_CONTEXT_XML = "classpath:/META-INF/application-context-nodb.xml";
public static void main(String[] args) {
SpringApplication.run(APPLICATION_CONTEXT_XML, getFullArgList(args));
}
}
的重载是:
SpringApplication.run(APPLICATION_CONTEXT_XML, getFullArgList(args))
spring-boot-2.0.0.RELEASE中不存在重载。
我的问题是 - 如何升级上述代码?
答案 0 :(得分:3)
你是对的:Spring Boot版本2中的SpringApplication
类的API没有提供等价。
所以没有直接的方法来提供XML Spring配置文件。
根据此answer,您可以使用@ImportResource
注释Spring Boot类。
@ImportResource("classpath:/META-INF/application-context-nodb.xml")
它的作用为@Import
,但它导入XML spring配置文件而不是类文件。
Javadoc信息:
表示包含要导入的bean定义的一个或多个资源。
与
@Import
类似,此注释提供类似于的功能 Spring XML中的元素。它通常在设计时使用@Configuration
类由一个引导程序AnnotationConfigApplicationContext
,但有一些XML功能 如名称空间仍然是必要的。
答案 1 :(得分:1)
您可以将注释@ImportResource
用于导入配置XML
@Configuration
@ComponentScan
@EnableAutoConfiguration(exclude = {HibernateJpaAutoConfiguration.class, RedisAutoConfiguration.class})
@ImportResource(APPLICATION_CONTEXT_XML)
public class NiceBootApplicationWithoutDB extends AbstractBootApplication {
public static final String APPLICATION_CONTEXT_XML = "classpath:/META-INF/application-context-nodb.xml";
public static void main(String[] args) {
SpringApplication.run(AbstractBootApplication.class, getFullArgList(args));
}
}
答案 2 :(得分:0)
你可以像这样添加一个Configuration类,这将考虑你的spring xml配置:)
@Configuration
@ImportResource({"classpath*:applicationContext.xml"})
public class XmlConfiguration {
}