有人能提供一个加载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创建的应用程序上下文?
答案 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
使其失败(这有助于我追踪真正的原因)。