0

我正在使用 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 上下文以用作参数,不确定我可以在这里做什么。谢谢

4

1 回答 1

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

}
于 2014-04-07T20:26:31.017 回答