ITKeyword,专注技术干货聚合推荐

注册 | 登录

Spring框架中如何读取Spring的XML配置文件

reggergdsg 分享于

2020腾讯云10周年活动,优惠非常大!(领取2860元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1040

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

推荐:[spring]Spring MVC web.xml 配置文件配置

原文地址:http://www.24xuexi.com/w/2012-03-28/98642.html 新建立一个Web Project, 含有web.xml <xml version="1.0"encoding="UTF-8"><web-app id="WebApp_I


今天我们来说说Spring框架中如何读取Spring的XML配置文件,通常Spring的配置文件是applicationContext.xml 或者 spring-servlet.xml 也可能是自定义的XML配置文件。我们通常将这些文件放在/

项目名称/WEB-INF/目录下,比如:
/SpringTest/WEB-INF/applicationContext.xml
/SpringTest/WEB-INF/spring-servlet.xml

最常见的方法是:通过ClassPathXmlApplicationContext这个类来获取,该类位于org.springframework.context.support包下。网上有很多例子,我主要说一下路径问题,关于这个路径,网上的大部分版本,都是直接这样写:



//spring-servlet.xml是我的SpringMVC的配置文件,位于项目的/SpringTest/WEB-INF/spring-servlet.xml目录下
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-servlet.xml"); 

很遗憾,这样做,从我的测试来看,是读取不到这个配置文件的,会报错,根本原因是找不到这个文件
java.io.FileNotFoundException: class path resource [webTest.xml] cannot be opened because it does not exist

我测试了一下,通过ClassPathXmlApplicationContext这个类,默认是加载E:\myeclipse\myeclipse10InstallFile\Spring\WebRoot\WEB-INF\classes\,也就是你的硬盘上的这个位置的配置文件,所以直接写ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-servlet.xml"); 是加载不到的。

我们在MyEclipse中看到的目录,和硬盘上的目录结构是不一样的,E:\myeclipse\myeclipse10InstallFile\Spring\WebRoot\WEB-INF\classes\目录下是编译以后的java文件,如果你把spring-servlet.xml文件,复制到这个目录下,那么你再运行这段代码,是可以加载到这个配置文件的,

<span style="font-size:14px;">ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-servlet.xml"); </span>


但是这显然不是我们想要的结果,那该怎么办呢,我是通过这种方法来做的,ClassPathXmlApplicationContext默认加载的不是E:\myeclipse\myeclipse10InstallFile\Spring\WebRoot\WEB-INF\classes\目录下的配置文件吗,那我们就进入classes的上一级目录,不就是WEB-INF了吗,而WEB-INF正是我们的配置文件所在的目录,代码如下:

推荐:spring配置文件(xml)读取properties文件属性值

web.xml <context-param>     <param-name>contextConfigLocation</param-name>     <param-value>         /WEB-INF/configuration/spring/applicationContext*

<span style="font-size:14px;">ApplicationContext applicationContext = new ClassPathXmlApplicationContext("../spring-servlet.xml");</span>

经过测试,这种方法是可行的。可以加载到我们的配置文件。

然后我们通过
applicationContext.getBean("dataSource");
就可以获得id为dataSource的bean,运行结果如下:
com.spring.dynamic_datasource.DynamicDataSource@1517e5e

有一点需要说明的是,这种方法,我们是读取的Spring框架的配置文件,是没有办法读取web.xml的配置文件的。web.xml和Spring的配置文件是不同的。下面我们来对比一下:

spring-servlet.xml


<?xml version="1.0" encoding="UTF-8"?>  
<!-- Bean头部 -->  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xmlns:p="http://www.springframework.org/schema/p"  
    xmlns:mvc="http://www.springframework.org/schema/mvc"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xmlns:util="http://www.springframework.org/schema/util"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  
            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  
            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">  
	 
	<!-- 配置多数据源 连接MySQL数据库中的2个不同的数据库 -->
    <bean id="dataSource" class="com.spring.dynamic_datasource.DynamicDataSource">
        <property name="targetDataSources">
            <map key-type="java.lang.String">
                <entry value-ref="datasource_test" key="datasource_test"></entry>
                <entry value-ref="datasource_learn_system" key="datasource_learn_system"></entry>
            </map>
        </property>
        <property name="defaultTargetDataSource" ref="datasource_learn_system"></property>
	</bean>
   
</beans> 

web.xml


<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

<!--  配置Spring MVC核心控制器 DispatcherServlet 和 URL --> 
<servlet>
  <servlet-name>spring</servlet-name> 
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
</servlet>

<servlet-mapping>
  <servlet-name>spring</servlet-name> 
  <url-pattern>*.action</url-pattern> 
</servlet-mapping>

</web-app>

spring-servlet.xml 的根元素是<beans></beans>
web.xml 的根元素是<web-app></web-app>

当然最根本的不同,来自命名空间,也就是这部分:


<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xmlns:p="http://www.springframework.org/schema/p"  
    xmlns:mvc="http://www.springframework.org/schema/mvc"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xmlns:util="http://www.springframework.org/schema/util"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  
            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  
            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"> 

这是Spring的配置文件的规范,如果你把一个XXX.xml的xml文件的规范定义成这样,Spring容器能自动识别,把该文件显示成Spring配置文件特有的标识。

好了,今天就说到这里。


推荐:Spring MVC web.xml 配置文件配置

新建立一个Web Project, 含有web.xml [html] view plaincopy 01.<xml version="1.0"encoding="UTF-8">  02.<web-app id="WebApp_ID" version="2.4"xmlns="http

今天我们来说说Spring框架中如何读取Spring的XML配置文件,通常Spring的配置文件是applicationContext.xml 或者 spring-servlet.xml 也可能是自定义的XML配置文件。我们通常将这些文件放在/ 项

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。