Spring的无XML配置

时间:2011-05-20 11:48:59

标签: java spring

我有非Web应用程序的以下配置bean

@Configuration
public class MyBeans {

    @Bean
    @Scope(value="prototype")
    MyObject myObject() {
        return new MyObjectImpl();
    }
}

另一方面,我有我的班级

public class MyCommand implements Command {

  @Autowired
  private MyObject myObject;

  [...]

}

如何在不使用XML的情况下使用MyBeans中的配置自动运行myCommand,以便我可以在其他测试类中注入模拟?

提前多多感谢。

1 个答案:

答案 0 :(得分:1)

使用基于XML的配置,您将使用ContextConfiguration批注。但是,ContextConfiguration批注似乎不适用于Java Config。这意味着您必须在测试初始化​​中重新配置应用程序上下文。

假设JUnit4:

@RunWith(SpringJUnit4ClassRunner.class)
public class MyTest{

    private ApplicationContext applicationContext;

    @Before
    public void init(){
        this.applicationContext = 
            new AnnotationConfigApplicationContext(MyBeans.class);

            //not necessary if MyBeans defines a bean for MyCommand
            //necessary if you need MyCommand - must be annotated @Component
            this.applicationContext.scan("package.where.mycommand.is.located");
            this.applicationContext.refresh(); 

        //get any beans you need for your tests here
        //and set them to private fields
    }

    @Test
    public void fooTest(){
        assertTrue(true);
    }

}