将测试bean注入main方法

时间:2014-03-26 14:06:40

标签: spring command-line spring-java-config

我正在使用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语境作为参数,不知道我能在这里做什么。感谢

1 个答案:

答案 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");
    }

}