将测试bean注入main方法



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

最新更新