spring加载jar包中多个配置文件(转)

转自:http://evan0625.iteye.com/blog/1598366

在使用spring加载jar包中的配置文件时,不支持通配符,需要一个一个引入,如下所示:

Java代码


<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:beanconfigs/applicationContext_1.xml,
classpath*:beanconfigs/applicationContext_2.xml,
...
</param-value>
</context-param>

这样太复杂了,对于一个大的项目而言,要在这里写入太多的配置,影响美观还害怕引入的xml减少。可以自定义一个applicationContext_all.xml,使用import引入其他配置文件,如下所示:

Java代码


<import resource="beanconfigs/applicationContext_1.xml" />
<import resource="beanconfigs/applicationContext_2.xml" />
...

可以使用通配符设置,如下所示:

Java代码


<import resource="beanconfigs/applicationContext_*.xml" />

这样在spring配置就可以写成如下所示:

Java代码


<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:applicationContext_all.xml
</param-value>
</context-param>

另,见网上资料:http://www.iteye.com/problems/9008

请问Spring如何在jar文件里面按文件夹加载配置文件?

一个Web应用有多个模块(假设有org和auth两个模块), 我希望为每个模块创建一个项目, 在项目中维护模块用到的配置文件.
然后将这些模块分别打包成jar放到web应用的WEB-INF/lib下.

现在用单元测试, 在Web应用中运行单元测试, 如果在Web应用的Build Path/Project中添加模块项目, 单元测试能够成功,
如果使用Build Path/Libraries添加模块jar文件, 运行单元测试失败. Spring中加载配置文件代码如下:
Xml代码


<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="mappingDirectoryLocations">
<list>
<value>classpath*:/config/hibernate/app/</value>
<value>classpath*:/config/hibernate/framework/</value>
</list>
</property>
...
</bean>

每个jar包里面都有/config/hibernate/framework文件夹
网上找到一个相关的讨论:
http://forum.springframework.org/archive/index.php/t-10029.html

好像是说对于directory的加载必须是文件夹必须存在于文件系统中, jar下面的文件夹找不到.不知道这个问题有没有办法解决?

我刚才试了一下, 如果把配置文件改成
Xml代码


<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="mappingLocations">
<list>
<value>classpath*:/config/hibernate/framework/*.xml</value>
</list>
</property>
...
</bean>

果然可以了

Spring中如何加载多个配置文件

http://tech.it168.com/jd/2008-04-01/200804011615198.shtml

1.第一种,使用数组

  代码


ApplicationContext contex=new ClassXmlApplicationContext(bew String["a1.xml","a2.xml"]);

  2.第二种,只用通配符

  代码


ApplicationContext contex=new ClassXmlApplicationContext("a*.xml");
  //但此种方法只对文件系统中的xml文件有效,针对jar包中的无效

  3.第三种,引入

  代码

  


ApplicationContext contex=new ClassXmlApplicationContext("a1.xml");   //在a1.xml中   //执行resource路径为相对a1.xml的路径

spring加载jar包中多个配置文件(转),布布扣,bubuko.com

时间: 2024-10-23 12:06:42

spring加载jar包中多个配置文件(转)的相关文章

spring加载jar包中的多个配置文件[转载]

在使用spring加载jar包中的配置文件时,不支持通配符,需要一个一个引入,如下所示: Java代码 <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath*:beanconfigs/applicationContext_1.xml, classpath*:beanconfigs/applicationContext_2.xml, ...

解决weblogic下通过war加载jar包中的struts的action找不到的问题

今天在功能测试环境中weblogic上部署应用时,启动后报错,说是spring找不到对应的action,所以怀疑是类加载的问题,找度娘一搜,果然是猜的没错,找到解决方法: 1. 将struts.xml加入: <constant name="struts.convention.action.includeJars" value=".*你的jar包名.*" /> 然后启动正常,但登陆后找不到struts的action.在开发环境中明显是可以的,而且在tomc

is not mapped问题,Spring加载jar中配置文件

错误如下: org.hibernate.hql.ast.QuerySyntaxException: Content is not mapped [select new Content (t.id,t.name,t.values,t.systemType,t.type,t.sortnumber) from Content t where 1=1 and t.type = ? and t.systemType = ? order by t.sortnumber desc ] at org.hiber

javaEE:day2-servlet生命周期、提交解决中文乱码、tomcat加载jar包或类文件的顺序

servlet生命周期 生命周期简介: servlet在服务器第一次被请求的时候new出来,并初始化(即init())再调用service方法.这个实在服务器中new出来,然后用HashMap加的,与客户端无关.客户端之后访问只调用这个servlet的service方法. 具体分为4步: 1 构造方法 :服务器在被客户端第一次请求的时候运行 仅在服务器中运行一次 2 init方法:客户端第一次访问服务器的时候在服务器中进行初始化 仅一次.并且可以通过config参数在 web.xml中通过(ke

java动态加载jar包,并运行其中的类和方法

动态加载jar包,在实际开发中经常会需要用到,尤其涉及平台和业务的关系的时候,业务逻辑部分可以独立出去交给业务方管理,业务方只需要提供jar包,就能在平台上运行. 下面通过一个实例来直观演示: 第一:定义一个抽象类 AbstractAction (稍后换成接口的实例) [java] view plain copy package com.java.loader; public abstract class AbstractAction { public abstract String actio

关于Weblogic优先加载jar包的设置

<?xml version="1.0" encoding="UTF-8"?><weblogic-web-app> <container-descriptor>  <prefer-web-inf-classes>true</prefer-web-inf-classes> </container-descriptor></weblogic-web-app> weblogic.xml 放到

动态加载jar包

一.编写被调用的类 package com.qunar.helloworld; public class HelloWorld { public String sayHello(){ return ("helloworld"); } } 使用eclipse的export功能导出jar包,放在/Users/liqiu/Documents/workspace/HelloWorld.jar 二.编写调用jar包的类 package com.qunar.studyspring.javajar;

动态加载jar包(二)

上次说的加载jar包,有几个问题没有解决: 1.如果项目包含了其他的jar包如何解决? 2.如何规范上传的jar包的类和方法? 下面就解决一下上面两个问题 一.首先编写被调用的类,这次使用maven工程,并且载入了第三方jar包,阿里巴巴的fastjson包 package com.qunar.hello.hello; import java.util.HashMap; import com.alibaba.fastjson.JSON; public class HelloWorld exten

maven加载jar包配置

maven build时报程序包不存在和找不到符号的错误,但是代码中不报错,如下: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.5.1:compile (default-compile) on project dataResourceManage: Compilation failure: Compilation failure: [ERROR] /D:/workspace/dat