我正在修改在應用程序上下文文件中使用Spring PropertyPlaceholderConfigurer的代碼。這些屬性已成功讀取並在應用程序中使用。但是,如果我按照<import resource="classpath:/my/class/path/${my.file.name}" />
的PropertyPlaceholderConfigurer聲明執行「Could not resolve placeholder 'my.file.name'
」錯誤並引發一系列異常。聲明PropertyPlaceholderConfigurer後屬性是否立即可用?如果不是,它們在什麼時候變得可用?由Spring Property Placeholder讀取的屬性是否立即可用?
2
A
回答
2
在一個spring上下文文件中有多次傳遞,所以這是一個什麼傳遞屬性可用的問題。不幸的是,<import>
標籤比bean聲明(例如PropertyPlaceholderConfigurer
)更早處理,因此它不會以您嘗試使用它的方式提供。
你(有可能)試圖做的事情是Spring中常見的事情,有許多不同的解決方案。它們通常涉及修改您的構建以進行注入。谷歌搜索/堆棧溢出爲每個環境春天配置應該變成一些東西。我讀過Spring 3.1將提供一個工具來允許每個環境的配置(如果我正在做一個「測試」構建,那麼使用「this」屬性文件,如果我正在做一個「dev」構建等等) ,但在這一點上我不太瞭解它。
3
導入資源在PropertyPlaceHolderConfigurer(BeanFactoryPostProcessor)解析屬性佔位符之前已解析。您必須將解析的資源名稱放入您的導入中。
因爲PropertyPlaceHolderConfigurer是BeanFactoryPostProcessor,所以在從Spring配置文件加載bean定義後調用它。
相關問題
- 1. Blueprint property-placeholder provider
- 2. 立即屬性
- 3. Spring註解,讀取屬性
- 4. 如何從過程inputStream中讀取不是立即可用的
- 5. 讀取屬性文件在Spring 3.2
- 6. Grails/Spring:如何在spring.xml中使用帶有屬性placeHolder的importBeans?
- 7. 即使按名稱訪問屬性,屬性獲取器是否被調用?
- 8. 是否可以使dom屬性只讀?
- 9. 確定屬性值是否由用戶設置(即綁定)
- 10. Spring 3.2屬性文件讀取動態屬性名稱(不是自動注入)
- 11. 從屬性文件讀取Spring 3
- 12. 是否有可能在.NET WMQ API中讀取JMSDeliveryMode屬性?
- 13. 立即讀取大文本文件而不立即讀入RAM
- 14. Spring上下文:property-placeholder無法解析嵌套變量
- 15. 立即讀取所有行
- 16. 無法在Spring中通過property-placeholder讀取屬性文件。獲取系統找不到指定的文件錯誤
- 17. 重寫Spring屬性是否更新引用它的屬性?
- 18. 是否可以立即終止TCPClient?
- 19. 如何讀取使用<context:property-placeholder>配置的所有屬性鍵>
- 20. 是否可以從SBT讀取Maven pom.xml屬性?
- 21. 是否可以從剪貼板讀取對象屬性
- 22. XML屬性「的innerText」是隻寫試圖讀取屬性值
- 23. 在Spring Boot中讀取屬性文件
- 24. 在Spring中讀取屬性文件
- 25. Spring Roo&讀取屬性文件
- 26. 在Spring Boot中讀取屬性值
- 27. spring bean可選屬性
- 28. 確定Spring Bean的可用屬性?
- 29. 如何使用spring讀取屬性文件並暴露給類
- 30. 是否可以獲取對象的屬性和關聯屬性?
這是在正確的軌道上。但是,導入語句實際上是在另一個上下文文件中讀取的。我的目標是根據my.file.name的值加載不同的上下文文件。每個上下文文件都有一個不同的底層緩存機制實現,與僅僅需要加載不同的屬性文件有點不同。有沒有更好的方法來做到這一點? – Adam
我這樣做的方式是在過去它沒有將屬性定義爲導入xml的名稱,而是導入「所有」xml文件,然後有一個屬性定義要注入的bean的id 。所以你需要導入包含所有不同緩存機制的xml,然後實際被注入(和使用)的id由屬性定義。這不一定理想,但它確實完成了工作。 – Melv
此方法是否最終在每個xml中實例化bean,而不管它們是否被使用? – Adam