在我目前正在进行的一个项目中,我们需要多个配置文件,即“默认”和“测试”。为了解决这个问题,我们实现了一个主上下文类 ApplicationContext.java,它带有 2 个公共静态内部类:其中一个定义了默认配置文件,另一个定义了测试配置文件。我们的 web.xml 设置为以 ApplicationContext.java 为目标。
代码如下:
@Configuration
//import common beans
public class ApplicationContext {
@Configuration
@Profile("default")
public static class DefaultContext {
//default beans
}
@Configuration
@Profile("test")
public static class TestContext {
//test beans
}
}
我的问题是主上下文类 ApplicationContext.java 位于生产环境(即 src/main/java)中,并引用了测试环境中的文件。如果有更好的方法来定义这些配置文件,而不会将这种依赖性从生产代码引入测试代码,那当然会更好。
我们已经在一个测试类中使用一个码头实例测试了这些案例,从一个 main 方法开始。此实例使用以下命令运行:
System.setProperty("spring.profiles.active", "test");