spring怎么读取xml文件(java 请问下SpringMVC中Spring是怎么去解析XML)
本文目录
- java 请问下SpringMVC中Spring是怎么去解析XML
- 如何让是spring启动时加载一个类这里类实现了读取xml配置数据到内存中(不是属性文件)
- 如何使用spring解析xml文件
- spring如何动态加载配置文件,就是配置文件修改了,application.xml如何能读取到
- Spring中加载XML文件的方式
- spring读取不到applicationContext.xml文件 项目里build了junit包,但是还是不能用@Test 多谢大神了!
java 请问下SpringMVC中Spring是怎么去解析XML
spring使用了jdk自带的jaxp解析技术,没有使用dom4j,所以spring工程里面也并没有依赖dom4j的jar。你可以看看XmlBeanDefinitionReader中的documentLoader属性,使用了DefaultDocumentLoader类来初始化的,DefaultDocumentLoader中的引用(import)都是JDK自带的类,DefaultDocumentLoader是spring用来解析xml的类。
如何让是spring启动时加载一个类这里类实现了读取xml配置数据到内存中(不是属性文件)
《bean id="readXmlService" class="com.xxx.xxx.readXmlServiceImpl" init-method="init"》《/bean》
这样配置你的读取xml的服务,spring框架会在启动的时候自动跑 readXmlServiceImpl中的init方法,所以你只要将读取xml的过程放到init方法里,那在spring启动的时候就会自动将xml中数据读取到内存中。
如何使用spring解析xml文件
Spring框架从2.0版本开始,提供了基于Schema风格的XML扩展机制,允许开发者扩展最基本的spring配置文件(一般是classpath下的spring.xml)。试想一下,如果我们直接在spring.xml中加入一个自定义标签《mytag id="aty"》《/matag》,会发生什么呢?spring框架启动的时候会报错,因为spring根本不认识我们自定义的《mytag》,这样对spring.xml的校验就会失败,最终结果就是框架不能启动。有什么方法,能够让spring认识并加载解析我们自定义的《mytag》呢?这就是spring提供的xml扩展机制。我们可以在spring.xml中加入自己的标签,之后spring会帮我们解析并纳入自己的管理范围内,这也就是说我们扩展了spring的功能。现在我们来看下怎么实现这个功能,可以参考spring帮助文档中的extensible-xml.html。我们知道如果在需要在spring.xml中配置数据源,需要进行如下的配置:《bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"》《property name="driverClassName" value="com.mysql.jdbc.Driver" /》《property name="url" value="jdbc:mysql://localhost:3309/sampledb" /》《property name="username" value="root" /》《property name="password" value="1234" /》《/bean》
spring如何动态加载配置文件,就是配置文件修改了,application.xml如何能读取到
项目,需要访问多个数据库,而且需要在服务器运行不重新启动的情况下,动态的修改spring中配置的数据源datasource,在网上找了很多资料,最后找到了适合我的方法,下面总结一下。 spring的配置文件是在容器启动的时候就加载到内存中的,如果手动改了application.xml,我们必须要重新启动服务器配置文件才会生效。而在spring中提供了一个类WebApplicationContext,这个类可以让你获得一些bean,可以修改内存中的信息,我就是通过这个类来实现的。下面是我具体的代码。 package com.southdigital.hospital; import java.io.IOException; import javax.servlet.ServletContext; import javax.servlet.ServletException; ***隐藏网址******隐藏网址******隐藏网址***import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import com.mchange.v2.c3p0.ComboPooledDataSource; public class ChangeSpringConfig extends HttpServlet { private String ipAddress = "127.0.0.1"; /** * The doGet method of the servlet. 《br》 * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } /** * The doPost method of the servlet. 《br》 * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //先取得servleContext对象,提供给spring的WebApplicationUtils来动态修改applicationContext.xml ipAddress = request.getParameter("ipAddress"); System.out.println(ipAddress); ServletContext servletContext = this.getServletContext(); WebApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext); ComboPooledDataSource cpds = (ComboPooledDataSource) applicationContext.getBean("dataSource"); cpds.setJdbcUrl("jdbc:mysql://"+ipAddress+":3306/ssh"); } } 注意:通过这种方法修改applicationContext.xml文件的时候用c3p0,而不可以用dbcp,dbcp不支持动态修改读取到内存里面的数据。spring 3.1已经支持了。
Spring中加载XML文件的方式
spring 中加载xml配置文件的方式 好像有 种 xml是最常见的spring 应用系统配置源 Spring中的几种容器都支持使用xml装配bean 包括
XmlBeanFactory
ClassPathXmlApplicationContext
FileSystemXmlApplicationContext
XmlWebApplicationContext
一 XmlBeanFactory 引用资源
Resource resource = new ClassPathResource( appcontext xml )
BeanFactory factory = new XmlBeanFactory(resource)
二 ClassPathXmlApplicationContext 编译路径
ApplicationContext factory=new ClassPathXmlApplicationContext( classpath:appcontext xml )
ApplicationContext factory=new ClassPathXmlApplicationContext( appcontext xml ) // src目录下的
ApplicationContext factory=new ClassPathXmlApplicationContext( conf/appcontext xml ) // src/conf 目录下的
ApplicationContext factory=new ClassPathXmlApplicationContext( file:G:/Test/src/appcontext xml )
三 : 用文件系统的路径
ApplicationContext factory=new FileSystemXmlApplicationContext( src/appcontext xml )
//使用了 classpath: 前缀 作为标志 这样 FileSystemXmlApplicationContext 也能够读入classpath下的相对路径
ApplicationContext factory=new FileSystemXmlApplicationContext( classpath:appcontext xml )
ApplicationContext factory=new FileSystemXmlApplicationContext( file:G:/Test/src/appcontext xml )
ApplicationContext factory=new FileSystemXmlApplicationContext( G:/Test/src/appcontext xml )
四 XmlWebApplicationContext 是专为Web工程定制的
ServletContext servletContext = request getSession() getServletContext()
lishixinzhi/Article/program/Java/ky/201311/28211
spring读取不到applicationContext.xml文件 项目里build了junit包,但是还是不能用@Test 多谢大神了!
第一种方式:路径修改为/com/test/applicationContext.xml
第二种方式:把config设为源码目录,config文件夹右键-Build Path-Use as Source Folder
更多文章:
直流开关电源(给开关电源一个直流电,开关电源还能稳定工作吗)
2024年7月19日 04:36
timeout官网(手机登录某个网站总是出现504gateway timeout)
2024年10月19日 07:45
html5选择器(“html5”的CSS3选择器中“:first-child”和“:last-child”是什么)
2024年6月30日 05:30
尚学堂现在有大数据就业班课程吗?尚学堂Java培训线上和线下课程有什么区别么
2024年6月25日 15:28
zblog源码下载((有关zblog) asp源码的问题,如何将以下源码写入c_custom.asp而不错)
2024年7月24日 01:14
vuechange事件(Vue element Switch @change事件死循环解决方式)
2024年7月11日 13:54
resource hacker中文版(resource hacker怎么汉化)
2024年3月23日 17:50
bootstrap方法的应用(统计学中bootstrap的具体含义,中文名字,用法举例)
2024年7月10日 08:03
transcript什么意思(transcript 是什么意思)
2024年7月13日 11:25
哈希宝app苹果版怎么下载?三星颗粒1660s挖eth参数设置
2024年7月2日 20:19
scala case(Scala 中的case关键字在这里是什么意思)
2024年7月22日 16:57
checkers是什么意思(checkers是什么意思及反义词)
2024年6月26日 05:27