spring项目jar包内的配置文件和项目的配置文件有重复项
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring项目jar包内的配置文件和项目的配置文件有重复项相关的知识,希望对你有一定的参考价值。
参考技术A 1、首先是web项目,可以配置web.xml。2、其次spring.profiles.activedev。
3、最后使用不同的profile启动,就会加载不同的bean和不同的配置。
Java - jar 文件的 Spring 属性文件配置
【中文标题】Java - jar 文件的 Spring 属性文件配置【英文标题】:Java - Spring property file configuration for jar file 【发布时间】:2012-08-26 16:14:03 【问题描述】:Java-Spring 我有基于模块的项目,我有 DAO 层模块和业务层模块,它依赖于 DAO 层和 Web 层依赖于 DAO 层和业务层。
我正在使用 maven 进行项目编译。每个组件的 jar 和 jar 都在 web 项目 lib 文件夹下。
问题是我在 DAO jar 中有 spring 上下文文件和 .property 文件,以下是我的配置,但我 spring 无法加载属性我也尝试在 value="classpath:abc.properties
前添加前缀,但它没有用。
当我打开 DAO jar 时,spring 上下文和 .properties 文件都在根目录下。
<bean id="applicationProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="abc.properties" />
</bean>
<bean id="cmfModelDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="$jdbc.ConnectionUrl"/>
<property name="username" value="$jdbc.Username"/>
<property name="password" value="$jdbc.Password"/>
</bean>
知道如何快速解决这个问题吗?
【问题讨论】:
你试过classpath*:abc.properties
吗?
支持以上评论:***.com/questions/3294423/…
我假设你得到的错误是 FileNotFoundException?你能发布完整的东西来确定吗?
你试过用classloader.getResource()加载指定的资源,有没有给你异常?
【参考方案1】:
我有一个使用以下代码的 Spring 多模块 Web 项目:
<context:property-placeholder location="classpath:env/env.properties" />
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="$env.datasource.driver" />
<property name="url" value="$env.datasource.url" />
<property name="username" value="$env.datasource.username" />
<property name="password" value="$env.datasource.password" />
</bean>
不要忘记验证xml文件中的命名空间url:
xmlns:context="http://www.springframework.org/schema/context";
文件夹 env 必须在类路径中,这样 Spring 才能找到它。我的属性文件也在一个罐子里,它工作得很好。
【讨论】:
【参考方案2】:我遇到了这个错误,int 可能与您初始化上下文的方式有关,例如在我的 Web 应用程序中,问题出在我在 web.xml 文件中设置的过滤器上。此外,我最终使用的不是 xml 文件,而是一个带注释的配置类,并将其放在 web.xml 中:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>com.myapp.configuration.SpringConfig</param-value>
</context-param>
如果您真的想使用 xml 文件,您必须将 AnnotationConfigWebApplicationContext 更改为 XmlWebApplicationContext。你应该告诉我们你是如何初始化你的上下文的(比如代码或 web.xml,如果这不能解决你的问题)
【讨论】:
以上是关于spring项目jar包内的配置文件和项目的配置文件有重复项的主要内容,如果未能解决你的问题,请参考以下文章
springboot的jar包内的配置文件与jar包外配置文件的加载顺序
springboot项目以jar包运行时,读取jar包内的静态文件