用spring的web应用里,XmlWebApplicationContext比ClassPathXmlApplicationContext有啥好处?文件位置呢?
用spring的web应用里,XmlWebApplicationContext和ClassPathXmlApplicationContext相比有啥好处?Spring从什...
用spring的web应用里,XmlWebApplicationContext和ClassPathXmlApplicationContext相比有啥好处?Spring 从什么位置加载配置文件?最好能给个参考的例子,多谢。
补充1楼:要用方法3需在web.xml里配置如下:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
如果不用listener,应:
XmlWebApplicationContext context = new XmlWebApplicationContext();
context.setServletContext(event.getServletContext());
context.refresh();
以上两种方式配置文件都应当是 /WEB-INF/applicationContext.xml
可增加其他配置文件或位置,这里不多说了。 展开
补充1楼:要用方法3需在web.xml里配置如下:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
如果不用listener,应:
XmlWebApplicationContext context = new XmlWebApplicationContext();
context.setServletContext(event.getServletContext());
context.refresh();
以上两种方式配置文件都应当是 /WEB-INF/applicationContext.xml
可增加其他配置文件或位置,这里不多说了。 展开
1个回答
展开全部
我们常用的加载context文件的方法有如下三个:
1、FileSystemXmlApplicationContext
这个方法是从文件绝对路径加载配置文件,例如:
ApplicationContext ctx = new FileSystemXmlApplicationContext( "G:/Test/applicationcontext.xml ");
如果在参数中写的不是绝对路径,那么方法调用的时候也会默认用绝对路径来找,我测试的时候发现默认的绝对路径是eclipse所在的路径。
采用绝对路径的话,程序的灵活性就很差了,所以这个方法一般不推荐。
(如果要使用classpath路径,需要加入前缀classpath: )
2、ClassPathXmlApplicationContext
这个方法是从classpath下加载配置文件(适合于相对路径方式加载),例如:
ApplicationContext ctx = new ClassPathXmlApplicationContext( "/applicationcontext.xml ");
该方法参数中classpath: 前缀是不需要的,默认就是指项目的classpath路径下面;这也就是说用ClassPathXmlApplicationContext时默认的根目录是在WEB-INF/classes下面,而不是项目根目录。这个需要注意!
3、XmlWebApplicationContext
专为web工程定制的方法,推荐Web项目中使用。例如:
ServletContext servletContext = request.getSession().getServletContext();
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);
1、FileSystemXmlApplicationContext
这个方法是从文件绝对路径加载配置文件,例如:
ApplicationContext ctx = new FileSystemXmlApplicationContext( "G:/Test/applicationcontext.xml ");
如果在参数中写的不是绝对路径,那么方法调用的时候也会默认用绝对路径来找,我测试的时候发现默认的绝对路径是eclipse所在的路径。
采用绝对路径的话,程序的灵活性就很差了,所以这个方法一般不推荐。
(如果要使用classpath路径,需要加入前缀classpath: )
2、ClassPathXmlApplicationContext
这个方法是从classpath下加载配置文件(适合于相对路径方式加载),例如:
ApplicationContext ctx = new ClassPathXmlApplicationContext( "/applicationcontext.xml ");
该方法参数中classpath: 前缀是不需要的,默认就是指项目的classpath路径下面;这也就是说用ClassPathXmlApplicationContext时默认的根目录是在WEB-INF/classes下面,而不是项目根目录。这个需要注意!
3、XmlWebApplicationContext
专为web工程定制的方法,推荐Web项目中使用。例如:
ServletContext servletContext = request.getSession().getServletContext();
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);
追问
多谢啦!用 XmlWebApplicationContext 的话,配置文件是放在哪个目录下呢?文件名呢?是不是必须是 /WEB-INF/applicationContext.xml?如果可以改,怎么改呢?除了用来装载配置文件的方式不同以外,这三种方式之间还有什么区别不?
追答
一般都用ClassPathXmlApplicationContext
第一种的缺点很明确了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询