2014-03-26 92 views
0

我正在使用JavaConfig來管理和連接Spring Bean到我的Java應用程序中。 Java應用程序是一種主要方法 - 基本上作爲批處理作業運行,通過bash文件調用。有沒有一種方法可以在我的主要方法中使用不同的(測試)配置?向主方法注入測試bean

public static void main(String[] args) { 
final ApplicationContext context = new AnnotationConfigApplicationContext(ApplicationConfig.class); 
// do Stuff 
} 

我已經在我的測試類成功之前使用以下注釋: @RunWith(SpringJUnit4ClassRunner.class)來 @ContextConfiguration(類= {} TestConfig.class)

,但這不起作用爲「主要」應用程序。沒有在Spring環境中傳遞作爲參數,不知道我能在這裏做什麼。謝謝

+0

我不能完全肯定我明白你想在這裏做什麼。但是一個簡單的方法是解析命令行參數並根據該參數更改要導入的類。我沒有得到'@ ContextConfiguration'帶來的... –

+0

檢查Spring Boot。如果我正確理解你的要求,它應該做你想做的 – geoand

回答

0

你應該能夠在你的實際配置類中使用配置文件來做你想做的。 通過設置所需的配置文件,你可以「注入」你想要的不同的豆。

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

}