Tôi có tệp Spring application-context.xml với PropertyPlaceholderConfigurer để lấy các giá trị của thuộc tính từ tệp .properties. Thư mục nguồn chính và thử nghiệm có tệp .properties riêng biệt. Vấn đề là tôi cần sử dụng các biến môi trường trong tệp .properties. Nhưng khi tôi làm điều đó theo cách sau:PropertyPlaceholderCấu hình và biến môi trường trong các tệp .properties
property.name=${env.SYSTEM_PROPERTY}
Tôi nhận được lỗi sau:
org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'beanName' defined in class path resource [com/example/applicationContext.xml]: Could not resolve placeholder 'env.SYSTEM_PROPERTY'
trong khi giữ chỗ configurer định nghĩa là
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:com/example/application.properties"/>
</bean>
Bất kỳ ý tưởng làm thế nào để làm cho property.name được hiểu là biến môi trường (và không phải là trình giữ chỗ)?
Trân trọng, Dmitriy.
này là khá tốt. Tuy nhiên một vấn đề là quên để xác định một biến thời gian chạy sản xuất lỗi thời gian chạy phức tạp, như config_xxx tập tin không tìm thấy và thích. Để cải thiện tình hình đó, tôi đăng ký một bean thực hiện các giao diện mùa xuân đặc biệt như thế này: class EnvironmentReporter thực hiện PriorityOrdered, BeanFactoryPostProcessor, EnvironmentAware {...} environment.getProperty cho phép tôi kiểm tra các thuộc tính mong đợi và thất bại trước khi bất kỳ bean nào khác nhận được tạo. – Federico