Настроить поведение обработки @PropertyResource для конфигурации на основе аннотаций Java - PullRequest
2 голосов
/ 27 января 2012

Я хочу настроить обработку источника свойств, используя при этом 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 Ответ

3 голосов
/ 11 июля 2012

Используйте это

@PropertySource({"ldap.properties", "file:/${conf.dir}/ldap.properties"})

, и вы получите последний, просто добавьте свой код propConfig

PropertySourcesPlaceholderConfigurer propConfig = new PropertySourcesPlaceholderConfigurer();
//.....
propConfig.setIgnoreResourceNotFound(true);
propConfig.setIgnoreUnresolvablePlaceholders(false);
propConfig.setLocalOverride(true);
//....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...