标签:beans param 构造方法 文件路径 except splay ima runner 构造
UnitTestBase的写入:
1 public class UnitTestBase { 2 private ClassPathXmlApplicationContext context; 3 private String springXmlpath; 4 public UnitTestBase() {}; 5 6 public UnitTestBase(String springXmlpath) { 7 this.springXmlpath = springXmlpath; 8 } 9 10 @Before 11 public void before() { 12 if(StringUtils.isEmpty(springXmlpath)) { 13 springXmlpath = "classpath*:spring-*.xml";//配置文件路径通过构造函数传入, 14 } 15 try { 16 context = new ClassPathXmlApplicationContext(springXmlpath.split("[,\\s]+"));//创建spring的容器context 17 context.start();//启动后查找配置文件里面配置的信息,并解析这些文件,然后装载到spring的上下文,即context里, 18 } catch(BeansException e) { 19 e.printStackTrace(); 20 } 21 } 22 23 @After 24 public void after() { 25 context.destroy(); 26 } 27 28 @SuppressWarnings("unchecked") 29 protected <T extends Object> T getBean(String beanId) { 30 return (T)context.getBean(beanId);//通过getBean方法获取相应的对象,而这里的beanId即是子类中传入的oneInterface,也在spring-ioc.xml文件中配置过的bean 31 } 32 33 protected <T extends Object> T getBean(Class<T> clazz) { 34 return context.getBean(clazz); 35 } 36 37 }
@Before也就是执行之前的内容,先加载配置文件,而配置文件的路径,从UnitTestBase的子类中通过构造方法获取,这里的classpath*:spring-*.xml是匹配所有以spring-开头的xml文件。创建Spring的容器,这里也就是context,当其启动后,会查找配置文件中的信息,并将信息加载到context容器中,当要使用这些信息时,可以用getBean方法获取到相应的对象。
UnitTestBase的子类的写入:
1 @RunWith(BlockJUnit4ClassRunner.class) 2 public class TestOneInterface extends UnitTestBase { 3 4 public TestOneInterface() { 5 super("classpath*:spring-ioc.xml"); 6 } 7 8 @Test 9 public void test() { 10 OneInterface oneIn = super.getBean("oneInterface"); 11 System.out.println(oneIn.hello("my parameters...")); 12 } 13 14 }
标签:beans param 构造方法 文件路径 except splay ima runner 构造
原文地址:http://www.cnblogs.com/cing/p/7413235.html