java取得spring's ApplicationContext的方法
昨天在弄个问题,不知道怎么读取到spring的ApplicationContext,找了很久,发现下面这篇文章很清晰,就记录下来(忘记了原文网址,昨天copy下来的文章)。
spring为ApplicationContext提供的3种实现分别为:ClassPathXmlApplicationContext, FileSystemXmlApplicationContext和XmlWebApplicationContext,其中 XmlWebApplicationContext是专为Web工程定制的。使用举例如下:
1. FileSystemXmlApplicationContext
eg1. ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml"); //加载单个配置文件
eg2. String[] locations = {"bean1.xml", "bean2.xml"};
ApplicationContext ctx = new FileSystemXmlApplicationContext(locations ); //加载多个配置文件
eg3. ApplicationContext ctx =new FileSystemXmlApplicationContext("D:/project/bean.xml");//根据具体路径加载文件
2. ClassPathXmlApplicationContext
eg1. ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");
eg2. String[] locations = {"bean1.xml", "bean2.xml"};
ApplicationContext ctx = new ClassPathXmlApplication(locations);
注:其中FileSystemXmlApplicationContext和ClassPathXmlApplicationContext与BeanFactory的xml文件定位方式一样是基于路径的。
3. XmlWebApplicationContext
eg1. ServletContext servletContext = request.getSession().getServletContext();
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);
没看这篇文章之前,我用的都是前面的两种方法,一直以失败告终。难道是因为我的applicationContext.xml没有放在src下面吗——我是直接放在web-inf下面的?看了这篇文章之后,我就绕道用了第三种方法。
哪位高手给讲解下怎么在class里面得到web-inf下面的ApplicationContext呢?路径写死就不算了。据说用ClassLoader可以,但是不了解呢。 1 楼 yuantong 2009-12-05 第1第2种没用过。
如果放在src下的话那就要在ClassLoader加载
在WEB-INF不需要