我们平时写test去测试Spring一起的程序时,一般都要加载context,然后再取bean之类。
写法如下:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/services-test-config.xml"})
public class MySericeTest {
@Autowired
MyService service;
...
}
现在的问题是,我要获取一个bean,但是上面这种通过annotation申明xml配置文件的方式,和我们原来的那种(如下),那光光写在annotation,那我怎么通过context的reference去获取bean呢?
[b]解决办法[/b]
其实申明一个context的成员变量,autowired一下就ok了
@Autowired
ApplicationContext context;
--------------------------------------
如果有多个xml的配置文件:
@ContextConfiguration(locations = {"classpath:com/xxx/aaa/applicationContext.xml",
"classpath:com/xxx/aaa/common-config.xml",
"classpath:com/xxx/aaa/applicationContext-dao.xml",})
写法如下:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/services-test-config.xml"})
public class MySericeTest {
@Autowired
MyService service;
...
}
现在的问题是,我要获取一个bean,但是上面这种通过annotation申明xml配置文件的方式,和我们原来的那种(如下),那光光写在annotation,那我怎么通过context的reference去获取bean呢?
[b]解决办法[/b]
其实申明一个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",})