Было бы лучше иметь класс-оболочку, который заботится о любых свойствах, и использовать оболочку для извлечения значений аргументов. Например,
@Component
public class ApplicationProperties {
private Properties properties = new Properties();
private Environment environment;
@Autowired
public ApplicationProperties(Environment environment) {
this.environment = environment;
}
public String getProperty(String name) {
return getPropertyFromEnvContext(name);
}
public String getProperty(String name, String defaultValue) {
String value = getProperty(name);
return value == null ? defaultValue : value;
}
private String getPropertyFromEnvContext(String name) {
if (environment == null) {
return properties.getProperty(name);
}
return properties.getProperty(name, environment.getProperty(name));
}
}
Затем вставьте этот класс свойств в bean-компоненты и используйте метод getProperty
, чтобы получить значение свойства. Вы должны написать логику для ключа.
Например, в моем случае использования,
String propertyKey = format("topics.%s.%s.%s", someVariable, someOtherVariable, priority);
properties.getProperty(propertyKey);