写法如下:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/services-test-config.xml"})
public class MySericeTest {
@Autowired
MyService service;
...
}
现在的问题是,我要获取一个bean,但是上面这种通过annotation申明xml配置文件的方式,和我们原来的那种(如下),那光光写在annotation,那我怎么通过context的reference去获取bean呢?
解决办法
其实申明一个context的成员变量,autowired一下就ok了
@Autowired
ApplicationContext context;
package com.test; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.FileSystemResource; public class SpringMain { /** * @param args */ public static void main(String[] args) { SpringBean bean = null; XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml")); bean = (SpringBean)factory.getBean("test1"); bean.sayHello(); ApplicationContext act = new ClassPathXmlApplicationContext("applicationContext.xml"); bean = (SpringBean)act.getBean("test1"); bean.sayHello(); factory = new XmlBeanFactory(new FileSystemResource("F:\\ccc\\workspace_zuhe\\Test\\src\\applicationContext.xml")); bean = (SpringBean)factory.getBean("test1"); bean.sayHello(); } }
--------------------------------------
如果有多个xml的配置文件:
@ContextConfiguration(locations = {"classpath:com/xxx/aaa/applicationContext.xml",
"classpath:com/xxx/aaa/common-config.xml",
"classpath:com/xxx/aaa/applicationContext-dao.xml",})