我有一个Spring应用程序,它到目前为止运行良好。现在我希望属性文件在外部配置文件夹中,而不是在打包的jar中更改内容而无需重新打包。这就是我得到的:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<!-- <property name="locations" value="classpath:/springcontext.properties"/> -->
<property name="locations" value ="config/springcontext.properties" />
已经取消评估的一个正在工作,而另一个我没有工作:/有人可以帮忙吗?
编辑: 到目前为止有4条评论。
也许我的问题不够清楚:)。我执行一个Maven构建,一切都将打包,我希望这个文件夹不在outcomming jar旁边的包装螺母中,在这个文件夹中我想要属性文件。可能的?
答案 0 :(得分:47)
您可以尝试这样的事情:
<context:property-placeholder
location="${ext.properties.dir:classpath:}/servlet.properties" />
在应用程序服务器/ jvm中定义ext.properties.dir
属性,否则将使用默认属性位置“classpath:/”(即.jar或.war的类目录):
-Dext.properties.dir=file:/usr/local/etc/
BTW,非常有用blog post。
答案 1 :(得分:12)
您可以使用文件前缀来加载外部应用程序上下文文件,例如
<context:property-placeholder location="file:///C:/Applications/external/external.properties"/>
答案 2 :(得分:11)
<context:property-placeholder location="classpath*:spring/*.properties" />
如果将它放在类路径中名为spring的目录中的某个位置(相应地更改名称/目录),则可以使用上面的
进行访问<property name="locations" value ="config/springcontext.properties" />
这将指向web-inf / classes / config / springcontext.properties
答案 3 :(得分:10)
This博客可以为您提供帮助。诀窍是使用SpEL(spring表达式语言)来读取像user.home
这样的系统属性,使用SpEL读取用户主目录,你可以在bean元素中使用
#{ systemProperties['user.home']}
表达式。例如,要访问存储在主目录中的属性文件,可以在PropertyPlaceholderConfigurer中使用以下内容,它对我有用。
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>file:#{ systemProperties['user.home']}/ur_folder/settings.properties</value>
</property>
</bean>
答案 4 :(得分:6)
这个问题有点陈旧,但想分享一些对我有用的东西。希望它对那些正在搜索访问外部位置属性的信息的人有用。
这对我有用。
属性文件内容:
PROVIDER_URL=t3://localhost:8003,localhost:8004
applicationContext.xml
文件内容:(春季3.2.3)
注意:${user.home}
是OS的系统属性。
<context:property-placeholder system-properties-mode="OVERRIDE" location="file:${user.home}/myapp/latest/bin/my-env.properties"/>
<bean id="appsclusterJndiTemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>
<prop key="java.naming.provider.url">${PROVIDER_URL}</prop>
</props>
</property>
</bean>
${PROVIDER_URL}
被替换为文件
答案 5 :(得分:2)
一种方法是将外部配置文件夹添加到java进程的类路径中。这就是我过去经常这样做的方式。
答案 6 :(得分:1)
<context:property-placeholder location="file:/apps/tomcat/ath/ath_conf/pcr.application.properties" />
这对我有用。 本地开发机器路径是C:\ apps \ tomcat \ ath \ _ ath_conf和server / apps / tomcat / ath / ath_conf
两者都适合我