启动spring容器

XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));

GreetingService greetingService = (GreetingService)factory.getBean("greetingService");  

greetingService.sayGreeting(); 
//销毁容器中的所有bean
factory.destroySingletons();

 

用Junit测试spring 获取ApplicationContext 总的来说有两种方式:

1. 硬编码获取ApplicationContext, 其中还包括5中方式

(转载自http://blog.163.com/wjf_j2ee2009/blog/static/1326020002010460395919/)

 

a. 利用ClassPathXmlApplicationContext,可以从classpath中读取XML文件

   

[javascript] view plain copy
  1. //读取一个文件   
  2. ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");   
  3. UserDao userDao = (UserDao)context.getBean("userDao");  
  4. //读取多个文件   
  5. ClassPathXmlApplicationContext resource = new ClassPathXmlApplicationContext(new String[]   
  6.    {"applicationContext-ibatis-oracle.xml","applicationContext.xml","applicationContext-data-oracle.xml"});   
  7.    BeanFactory factory = resource;  
  8. UserDao userDao = (UserDao) factory.getBean("userDao");  

 

 

b. 利用ClassPathResource,可以从classpath中读取XML文件

   

[java] view plain copy
  1. Resource cr = new ClassPathResource("applicationContext.xml");   
  2. BeanFactory bf=new XmlBeanFactory(cr);   
  3. UserDao userDao = (UserDao)bf.getBean("userDao");  

 

c. 利用XmlWebApplicationContext读取

 

[java] view plain copy
  1. XmlWebApplicationContext ctx = new XmlWebApplicationContext();   
  2. ctx.setConfigLocations(new String[] {"/WEB-INF/ applicationContext.xml");   
  3. ctx.setServletContext(pageContext.getServletContext());   
  4. ctx.refresh();   
  5. UserDao userDao = (UserDao ) ctx.getBean("userDao ");  



 

d. 利用FileSystemResource读取 

[java] view plain copy
  1. Resource rs = new FileSystemResource("D:/tomcat/webapps/test/WEB-INF/classes/ applicationContext.xml");  
  2. BeanFactory factory = new XmlBeanFactory(rs);   
  3. UserDao userDao = (UserDao )factory.getBean("userDao");   


   注意:利用FileSystemResource,则配置文件必须放在project直接目录下,或者写明绝对路径,否则就会抛出找不到文件的异常

 

e. 利用FileSystemXmlApplicationContext读取,可以指定XML定义文件的相对路径或者绝对路径来读取定义文件。

  

[java] view plain copy
  1. String[] path={"WebRoot/WEB-INF/applicationContext.xml","WebRoot/WEB-INF/applicationContext_task.xml"};  
  2. ApplicationContext context = new FileSystemXmlApplicationContext(path);  
  3. String path="WebRoot/WEB-INF/applicationContext*.xml";   
  4. ApplicationContext context = new FileSystemXmlApplicationContext(path);  
  5. ApplicationContext ctx = new FileSystemXmlApplicationContext("classpath:地址");  

 

2.采用Spring 提供的Test框架, 需要下载Spring-test jar包,采用注释的方式

 @RunWith(SpringJUnit4ClassRunner.class)

[html] view plain copy
  1. //@ContextConfiguration({"file:src/main/webapp/WEB-INF/spring/applicationContext.xml"})  
  2. @ContextConfiguration("classpath:applicationContext.xml")  

文件和classpath都可以,但这只完成自动注入功能,如需要获取ApplicationContext, 需要继承ApplicationContextAware接口,实现setApplicationContext方法,在该方法就可以获取ApplicationContext

 

 

[java] view plain copy
  1. @Override   
  2. public void setApplicationContext(ApplicationContext arg0)   
  3.         throws BeansException {   
  4.     context=arg0;   
  5. }  

 

 

之后就可以使用context. 

注意:两种方式不能混用,否则会开启两个spring容器。推荐使用第二种。

posted @   letmedown  阅读(186)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示