spring-boot-2.0.0.RELEASE中缺少SpringApplication.run的特定重载

时间:2018-03-20 08:44:06

标签: java spring spring-boot

我需要将应用程序从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中不存在重载。

我的问题是 - 如何升级上述代码?

3 个答案:

答案 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 {

}