有条件地加载应用程序上下

时间:2015-02-26 12:02:41

标签: java spring conditional applicationcontext

如何从两个位置中的一个加载spring-beans xml文件?

  • System.getProperty("conf.dir") + "/context.xml"如果存在,则返回
  • classpath:/context.xml

这是我开始使用但我只想要加载第一个找到的上下文

@Configuration
@ImportResource({"${conf.dir}/context.xml", "classpath:/context.xml"})
public class AppConfig {
     @Autowire somethingFromAboveXmlContext;
}

我已查看@Conditional,但解决方案变得有点不直观。

@Configuration
@Conditional(AppContextCondition.class)
@ImportResource("${conf.dir}/context.xml")
@ImportResource("classpath:/context.xml")
public class AppConfig {
     @Autowire somethingFromAboveXmlContext;
}

是否有手动方法来执行ImportResource所做的事情?

1 个答案:

答案 0 :(得分:2)

你可以试试这个:

@Configuration
@ImportResource({"${conf.dir}/context.xml"})
public class AppConfig {
 static {
    if(!System.getProperties().contains("conf.dir")) {
        System.setProperty("conf.dir", "classpath:");
    }
 }
 @Autowire somethingFromAboveXmlContext;
}

我同意它可能不是一个完美的解决方案,但它可以工作!