Настроить поведение обработки @PropertyResource для конфигурации на основе аннотаций Java
Я хочу настроить обработку источника свойств, используя Java-аннотацию, основанную на инициализации весеннего веб-приложения.
@Configuration
@PropertySource("ldap.properties")
@Repository
public class LdapDao {
...
@Autowired
public void setEnv(Environment env) throws NamingException {
this.url = env.getProperty("url").trim();
this.user = env.getProperty("user").trim();
this.password = env.getProperty("password).trim();
this.initializeLdapContext();
}
...
}
В этом случае Spring будет искать источник свойства в classpath. Если источник свойства объявлен как:
@PropertySource("file:/${conf.dir}/ldap.properties")
ldap.properties ищется в каталоге, указанном системным свойством "conf.dir".
Мне нужно поведение, когда ресурс свойства сначала ищется в каталоге, указанном системным свойством "conf.dir". Если он там не найден, его местоположение по умолчанию равно classpath.
Любое предложение о том, как добиться этого поведения?
1 ответ
Использовать этот
@PropertySource({"ldap.properties", "file:/${conf.dir}/ldap.properties"})
и вы получите последний, просто добавьте свой код propConfig
PropertySourcesPlaceholderConfigurer propConfig = new PropertySourcesPlaceholderConfigurer();
//.....
propConfig.setIgnoreResourceNotFound(true);
propConfig.setIgnoreUnresolvablePlaceholders(false);
propConfig.setLocalOverride(true);
//....