我正在使用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语境作为参数,不知道我能在这里做什么。感谢
答案 0 :(得分:0)
您应该能够在实际的配置类中使用配置文件来执行您想要的操作。 通过设置所需的配置文件,您可以“注入”您想要的不同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");
}
}