我将Spring属性文件定义为:
<bean
class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="locations">
<list>
<value>lanchecker.properties</value>
</list>
</property>
</bean>
根据http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html中的23.3:
SpringApplication将从以下位置的application.properties文件加载属性,并将它们添加到Spring环境中:
当前目录的A / config子目录。
当前目录
classpath / config包
类路径根
列表按优先顺序排列(在列表中较高位置定义的属性会覆盖在较低位置定义的属性)。
在开发期间,此文件驻留在CLASSPATH,位于/ src / main / resources,并且可以正常解析。打包后我在当前目录中提供了另一个,但它被忽略了,CLASSPATH中的那个仍在使用。
我在这里错过了什么?
答案 0 :(得分:0)
这似乎有效:
<bean
class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="ignoreResourceNotFound" value="true" />
<property name="locations">
<list>
<value>classpath:lanchecker.properties</value>
<value>file:${user.dir}/lanchecker.properties</value> <!-- file values will override classpath if exists -->
</list>
</property>
</bean>
如果两者都存在,它将首先读取类路径上的资源,然后用文件中的任何内容替换那里的值。
如果两者都不存在,那么在稍后阶段使用属性值时,它们就会成为一个讨厌的追溯。虽然有一些INFO日志消息可以帮助解决这个问题。不愉快,但它是我今天能够想到的最好的