我使用JavaConfig来管理Spring bean并将其连接到我的Java应用程序中。Java应用程序是一个主方法-并且基本上作为批处理作业运行,通过bash文件调用。是否有一种方法,我可以在我的主方法中使用不同的(测试)配置?
public static void main(String[] args) {
final ApplicationContext context = new AnnotationConfigApplicationContext(ApplicationConfig.class);
// do Stuff
}
我之前在我的测试类中成功地使用了以下注释:@RunWith (SpringJUnit4ClassRunner.class)@ContextConfiguration(classes = {TestConfig.class})
,但这不适用于"主"应用程序。没有在Spring上下文中传递作为参数使用,不确定在这里可以做什么。由于
您应该能够在实际的配置类中使用配置文件来做您想做的事情。通过设置所需的概要文件,您可以"注入"所需的不同bean。
你的ApplicationConfig可能看起来像:
@Configuration
@Import({
JndiDataConfig.class,
TestDataConfig.class,
)
public class ApplicationConfig {
...
其中TestDataConfig看起来(部分)像:
@Configuration
@Profile("test")
public class TestDataConfig {
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.HSQL)
.addScript("classpath:com/bank/config/sql/schema.sql")
.addScript("classpath:com/bank/config/sql/test-data.sql")
.build();
}
}
和JndiDataConfig看起来像:
@Configuration
@Profile("production")
public class JndiDataConfig {
@Bean
public DataSource dataSource() throws Exception {
Context ctx = new InitialContext();
return (DataSource) ctx.lookup("java:comp/env/jdbc/datasource");
}
}