在我的應用程序中,我使用SpringBoot和Spring批處理(和管理)框架。我也使用一個application.yaml文件來存儲我需要的所有屬性。我在Properties中遇到了問題,因爲在SpringBatchAdmin中創建的PropertyPlaceholderConfigurer
bean的標記ignoreUnresolvablePlaceholders
設置爲false
。這裏是上述豆:IllegalArgumentException異常與Spring PropertyPlaceholderConfigurer屬性標誌
<bean id="placeholderProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:/org/springframework/batch/admin/bootstrap/batch.properties</value>
<value>classpath:batch-default.properties</value>
<value>classpath:batch-${ENVIRONMENT:hsql}.properties</value>
</list>
</property>
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="ignoreResourceNotFound" value="true" />
<property name="ignoreUnresolvablePlaceholders" value="false" />
<property name="order" value="1" />
</bean>
我的問題是,目前春季這3個文件搜索,閱讀全部使用@Value
註釋,被取出的屬性。所以會發生的是,我有其他聲明自己屬性的依賴關係,並且Spring迫使我將這些屬性放在SpringBatchAdmin中創建的PropertyPlaceholderConfigurer
bean中聲明的3個文件之一中。
因此,舉例來說,下面的類/豆:
@Component
public class Example{
@Value("${find.me}")
private String findMe;
...
}
將在以下3個文件,以尋找:
batch.properties
batch-default.properties
batch-sqlserver.properties
,如果財產find.me
是不是其中之一文件,然後我得到以下異常:
java.lang.IllegalArgumentException: Could not resolve placeholder 'find.me' in string value "${find.me}"
我想補充一點問題不是來自使用yaml或Spring未找到「find.me」屬性,因爲如果我不使用創建PropertyPlaceholderConfigurer
的SpringBatchAdmin,則在我的application.yaml
文件中可以找到屬性「find.me」。
此外,我不能修改PropertyPlaceholderConfigurer
問題,因爲它來自外部源(不是我的,但SpringBatchAdmin)。
我該如何解決這個問題?