PropertySourcesPlaceholderConfigurer не регистрируется в среде в проекте SpringBoot
Я перемещаю рабочий проект от использования аргументов командной строки SpringBoot к чтению свойств из файла. Вот участвующие части@Configuration
класс:
@Configuration
class RemoteCommunication {
@Inject
StandardServletEnvironment env
@Bean
static PropertySourcesPlaceholderConfigurer placeholderConfigurer () {
// VERIFIED this is executing...
PropertySourcesPlaceholderConfigurer target = new PropertySourcesPlaceholderConfigurer()
// VERIFIED this files exists, is readable, is a valid properties file
target.setLocation (new FileSystemResource ('/Users/me/Desktop/mess.properties'))
// A Debugger does NOT show this property source in the inject Environment
target
}
@Bean // There are many of these for different services, only one shown here.
MedicalSorIdService medicalSorIdService () {
serviceInstantiator (MedicalSorIdService_EpicSoap, 'uri.sor.id.lookup.internal')
}
// HELPER METHODS...
private <T> T serviceInstantiator (final Class<T> classToInstantiate, final String propertyKeyPrimary) {
def value = retrieveSpringPropertyFromConfigurationParameter (propertyKeyPrimary)
classToInstantiate.newInstance (value)
}
private def retrieveSpringPropertyFromConfigurationParameter (String propertyKeyPrimary) {
// PROBLEM: the property is not found in the Environment
def value = env.getProperty (propertyKeyPrimary, '')
if (value.isEmpty ()) throw new IllegalStateException ('Missing configuration parameter: ' + "\"$propertyKeyPrimary\"")
value
}
С помощью@Value
ввести свойстваделает работать, однако я бы предпочел работать сEnvironment
напрямую, если это вообще возможно. Если настройки не находятся вEnvironment
тогда я не совсем уверен, где@Value
вытаскивает их из ...
env.getProperty()
продолжает работать хорошо, когда я передаю в командной строке аргументы, указывающие свойства, хотя.
Любые предложения приветствуются!