有条件地加载应用程序上下文
Conditionally load application context
如何从两个位置之一加载 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
的操作?
你可以试试这个:
@Configuration
@ImportResource({"${conf.dir}/context.xml"})
public class AppConfig {
static {
if(!System.getProperties().contains("conf.dir")) {
System.setProperty("conf.dir", "classpath:");
}
}
@Autowire somethingFromAboveXmlContext;
}
我同意这可能不是一个完美的解决方案,但它可以工作!
如何从两个位置之一加载 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
的操作?
你可以试试这个:
@Configuration
@ImportResource({"${conf.dir}/context.xml"})
public class AppConfig {
static {
if(!System.getProperties().contains("conf.dir")) {
System.setProperty("conf.dir", "classpath:");
}
}
@Autowire somethingFromAboveXmlContext;
}
我同意这可能不是一个完美的解决方案,但它可以工作!