高达模型pg飞翼合金:Spring为ApplicationContext提供的三种方式(转)_fyf_fff_新...
来源:百度文库 编辑:偶看新闻 时间:2024/04/29 04:50:04
Spring为ApplicationContext提供的三种方式(转)(2010-08-19 15:24:33) ClassPathXmlApplicationContext
FileSystemXmlApplicationContext
XmlWebApplicationContext
其中 XmlWebApplicationContext是专为Web工程定制的。使用举例如下:
//加载多个文件
String[] Local={"classpath:applicationContext.xml"};
//这是放在src下,所以用classpath: 当然你也可以不用
//第一种方式
ApplicationContext context=new FileSystemXmlApplicationContext(Local);
//第二种方式
context= new ClassPathXmlApplicationContext(Local);
这两种方式一般用于在Action中或者Manager中获得其他的Manager
第三种方式:
在web.xml中配置
配置监听器:
org.springframework.web.context.ContextLoaderListener
配置监听器监听的xml
contextConfigLocation
classpath:applicationContext.xml
Jsp中处理:
<%
//第三种方式
ServletContext servletContext = request.getSession().getServletContext();
ApplicationContext ctx=WebApplicationContextUtils.getWebApplicationContext(servletContext);
out.println(ctx);//测试
%>
这种方式一般用于在jsp中取Manager,当然其他的你能get到的 都可以获得
jsp 中导入的包
<%@ page import="org.springframework.web.context.support.WebApplicationContextUtils,org.springframework.context.ApplicationContext" %>
Spring为ApplicationContext提供的3种实现分别为:ClassPathXmlApplicationContext, FileSystemXmlApplicationContext和XmlWebApplicationContext,其中 XmlWebApplicationContext是专为Web工程定制的。使用举例如下:
1. FileSystemXmlApplicationContext
eg1. ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml"); //加载单个配置文件
eg2.
String[] locations = {"bean1.xml", "bean2.xml", "bean3.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", "bean3.xml"};
ApplicationContext ctx = new ClassPathXmlApplication(locations);
注:其中FileSystemXmlApplicationContext和ClassPathXmlApplicationContext与BeanFactory的xml文件定位方式一样是基于路径的。
3.XmlWebApplicationContext
eg1. ServletContext servletContext = request.getSession().getServletContext();
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);
2-
如果userDAO设置了,假设ServiceImpl有一个属性名为userDAO,Spring就会在配置文件里查找有没有名字为userDAO的bean, 自动为ServiceImpl注入。
如果bean有两个属性,一个想默认注入,一个想自定义,只要设定了autowire,然后显式的声明那个想自定义的,就可以达到要求。这就应了需求,在需要特别配置的时候就提供配置,否则给我一个默认注入。
还可以在根部的节点写一句default-,可以让文件里的所有bean 都默认autowrie。不过有人认为开发期可以这样,但Production Server上不应该使用Autowire。但有人认为那些自定义一次的地方比如TranscationManager应该详细定义,而Dao, Service这种大量重复定义的bean就可以这样做。
3-关于不同的配置文件中的Bean能否互相引用
拆分成多个以后,bean的配置可以放在其中一个文件中,不必在每个文件中都复制。
多个文件,比如applicationContext-datasource.xml(数据源的)、applicationContext- hibernate.xml、applicationContext-service.xml等,你只需要在web.xml中配置:
contextConfigLocation
/WEB-INF/applicationContext-*.xml
这样spring就可以把多个文件同时装载。
在一个配置文件中的bean想要引用另一个文件中的bean,可以使用
这样拿到。注意是bean=,而不是local=。
如果是使用local=表示从当前配置文件中寻找bean,如果bean是在其他文件中则用bean=来找。
4-关于Context的分级
如当前环境中没这个bean,就会到parent中去找。
不过我个人觉得一般的情况用多个xml文件就够了,不必用多层的。这里用多层是因为每个不同的DispatcherServlet有自己的特殊的 handlerMappings,viewResolvers,handlerExceptionResolvers这些东西,但是每个 DispatcherServlet又需要引用一些全局的bean,比如datasource之类的。
一个applicationcontext可以load多个配置文件。只要把配置文件作为数组传进去就可以了。和parent毫不相关。
至于parent context和child context之间的关系确实如你所说。在child context可以reference到parent context中的bean。而parent context不知道child的存在,当然就更不能reference了。
至于xml文件的确是可以包含另一个xml文件的。用import就可以。详细可以看spring的dtd。不过import进去的xml不是在child context中。相当与把xml中的bean都include进去。
把context分成parent/child体系从我的角度来体会就是觉得context之间可以不互相影响。例如我可以在一个child context中部署我的scheduler。当发现配置文件改动,也就是其中的task改动时我简单的refresh child context就可以,这样不至于影响到parent context中工作的bean。
先说声谢谢,知道了三种配置xml的方式。
一个applicationContext能同时装入多个xml文件.
在web.xml中能配置多个applicationcontext.xml,可以分别加入,也可以用通配符(我喜欢这种)。
一个xml文件中能import别外一个xml.
在Spring中主要的模块化单元是一个application context,它包含很多个beans(由Spring应用环境所管理的对象)。Application contexts可以分级配置,这样一个子application context可以看到定义在其上级的beans,但是反之则不行。Spring的exporters及factory beans的概念用于导出引用给application context外部的客户端的beans,以及注入引用到定义在一个application context外部的服务
FileSystemXmlApplication
XmlWebApplicationContext
其中 XmlWebApplicationContext
//加载多个文件
String[] Local={"classpath:applicationContext.xml"};
//这是放在src下,所以用classpath: 当然你也可以不用
//第一种方式
ApplicationContext context=new FileSystemXmlApplication
//第二种方式
context= new ClassPathXmlApplicationC
这两种方式一般用于在Action中或者Manager中获得其他的Manager
第三种方式:
在web.xml中配置
配置监听器:
配置监听器监听的xml
Jsp中处理:
<%
//第三种方式
ServletContext servletContext = request.getSession().getServletContext();
ApplicationContext ctx=WebApplicationContextUti
out.println(ctx);//测试
%>
这种方式一般用于在jsp中取Manager,当然其他的你能get到的 都可以获得
jsp 中导入的包
<%@ page import="org.springframework.web.context.support.WebApplicationContextUti
Spring为ApplicationContext提供的3种实现分别为:ClassPathXmlApplicationC
1. FileSystemXmlApplication
eg1. ApplicationContext ctx = new FileSystemXmlApplication
eg2.
String[] locations = {"bean1.xml", "bean2.xml", "bean3.xml"};
ApplicationContext ctx = new FileSystemXmlApplication
eg3.
ApplicationContext ctx =new FileSystemXmlApplication
2. ClassPathXmlApplicationC
eg1. ApplicationContext ctx = new ClassPathXmlApplicationC
eg2.
String[] locations = {"bean1.xml", "bean2.xml", "bean3.xml"};
ApplicationContext ctx = new ClassPathXmlApplication(locations);
注:其中FileSystemXmlApplication
3.XmlWebApplicationContext
eg1. ServletContext servletContext = request.getSession().getServletContext();
ApplicationContext ctx = WebApplicationContextUti
2-
如果userDAO设置了,假设ServiceImpl有一个属性名为userDAO,Spring就会在配置文件里查找有没有名字为userDAO的bean, 自动为ServiceImpl注入。
如果bean有两个属性,一个想默认注入,一个想自定义,只要设定了autowire,然后显式的声明那个想自定义的,就可以达到要求。这就应了需求,在需要特别配置的时候就提供配置,否则给我一个默认注入。
还可以在根部的
3-关于不同的配置文件中的Bean能否互相引用
拆分成多个以后,bean的配置可以放在其中一个文件中,不必在每个文件中都复制。
多个文件,比如applicationContext-datasource.xml(数据源的)、applicationContext- hibernate.xml、applicationContext-service.xml等,你只需要在web.xml中配置:
/WEB-INF/applicationContext-*.xml
这样spring就可以把多个文件同时装载。
在一个配置文件中的bean想要引用另一个文件中的bean,可以使用
这样拿到。注意是bean=,而不是local=。
如果是使用local=表示从当前配置文件中寻找bean,如果bean是在其他文件中则用bean=来找。
4-关于Context的分级
如当前环境中没这个bean,就会到parent中去找。
不过我个人觉得一般的情况用多个xml文件就够了,不必用多层的。这里用多层是因为每个不同的DispatcherServlet有自己的特殊的 handlerMappings,viewResolvers,handlerExceptionResolver
一个applicationcontext可以load多个配置文件。只要把配置文件作为数组传进去就可以了。和parent毫不相关。
至于parent context和child context之间的关系确实如你所说。在child context可以reference到parent context中的bean。而parent context不知道child的存在,当然就更不能reference了。
至于xml文件的确是可以包含另一个xml文件的。用import就可以。详细可以看spring的dtd。不过import进去的xml不是在child context中。相当与把xml中的bean都include进去。
把context分成parent/child体系从我的角度来体会就是觉得context之间可以不互相影响。例如我可以在一个child context中部署我的scheduler。当发现配置文件改动,也就是其中的task改动时我简单的refresh child context就可以,这样不至于影响到parent context中工作的bean。
先说声谢谢,知道了三种配置xml的方式。
一个applicationContext能同时装入多个xml文件.
在web.xml中能配置多个applicationcontext.xml,可以分别加入,也可以用通配符(我喜欢这种)。
一个xml文件中能import别外一个xml.
在Spring中主要的模块化单元是一个application context,它包含很多个beans(由Spring应用环境所管理的对象)。Application contexts可以分级配置,这样一个子application context可以看到定义在其上级的beans,但是反之则不行。Spring的exporters及factory beans的概念用于导出引用给application context外部的客户端的beans,以及注入引用到定义在一个application context外部的服务
spring是什么意思
pierian spring
spring breeze
Eniaying Spring
Spring优缺点
写一篇题目为<How I spent the spring festival>
Happy spring festival
hot spring是什么意思
Happy spring festival
Spring Festival是什么节日
The Spring Festival
spring lasts long
the spring festivai 是什么意思
the spring festival 是什么意思
the spring festival
MY SPRING FESTIVER
Spring in Action
为什么要使用Spring?
LISTING SPRING CLOTHING
A Spring Morning 是什么意思
spring fling 是什么意思?
spring cleaning day 是什么意思?
Spring Bud Project
请问什么是spring break