使用SpringApplication时加载applicationcontext.xml

时间:2015-03-20 18:38:43

标签: spring-boot applicationcontext

有人能提供一个加载applicationContext.xml文件的SpringApplication示例吗?

我尝试使用Spring's Example(基于Gradle)将我的GWT RPC应用程序移动到RESTful Web服务。我有一个applicationContext.xml,但我没有看到如何让SpringApplication加载它。通过

手动加载

ApplicationContext context = new ClassPathXmlApplicationContext(args);

导致空的上下文。 ......即使它起作用,也会与

返回的那个分开

SpringApplication.run(Application.class, args);

或者有没有办法让外部bean进入SpringApplication.run创建的应用程序上下文?

4 个答案:

答案 0 :(得分:10)

如果您想使用类路径中的文件,可以随时执行此操作:

@SpringBootApplication
@ImportResource("classpath:applicationContext.xml")
public class ExampleApplication {
    public static void main(String[] args) throws Exception {
        SpringApplication.run(ExampleApplication.class, args);
    }
}

请注意classpath注释中的@ImportResource字符串。

答案 1 :(得分:8)

您可以使用@ImportResource将XML配置文件导入Spring Boot应用程序。例如:

@SpringBootApplication
@ImportResource("applicationContext.xml")
public class ExampleApplication {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(ExampleApplication.class, args);
    }

}

答案 2 :(得分:0)

注释(不必在类上)具有(具有main方法)(具有以下调用):

  

SpringApplication.run(Application.class,args);

(对于您来说,我的意思是@ImportResource不必在您的课程上)

  

公共类ExampleApplication {}

.........

您可以选择其他课程

@Configuration
@ImportResource({"classpath*:applicationContext.xml"})
public class XmlConfiguration {
}

或者为了清楚起见

@Configuration
@ImportResource({"classpath*:applicationContext.xml"})
public class MyWhateverClassToProveTheImportResourceAnnotationCanBeElsewhere {
}

本文中提到了以上

http://www.springboottutorial.com/spring-boot-java-xml-context-configuration

.........

奖金:

以防万一您可能以为“ SpringApplication.run”是一个无效方法.....事实并非如此。

您也可以这样做:

public static void main(String[] args) {

        org.springframework.context.ConfigurableApplicationContext applicationContext = SpringApplication.run(ExampleApplication.class, args);

        String[] beanNames = applicationContext.getBeanDefinitionNames();
        Arrays.sort(beanNames);

        for (String name : beanNames) {
            System.out.println(name);
        }

这也会巧妙地提示您进入很多很多很多(我是否提到过“很多”?).... spring boot带来的依赖性。这取决于您与谁讲话,这是一件好事(别人为我做了所有很好的解决)或一件邪恶的事(哇,这是我无法控制的很多依赖项)。

标签:有时看起来在窗帘后面

答案 3 :(得分:-1)

谢谢安迪,这使它非常简洁。但是,我的主要问题是将applicationContext.xml放入类路径中。

显然,将文件放入src/main/resources需要将它们放入类路径中(通过将它们放入jar中)。我试图设置CLASSPATH,它被忽略了。在上面的例子中,负载似乎无声地失败。使用@ImportResource使其失败(这有助于我追踪真正的原因)。