Я пытаюсь получить свойства из файла .properties в объекте моего приложения. Мое единственное знание о том, как это сделать, - это объект Environment
.Как autowire объект Spring Environment
Он отлично работает в моей конфигурации ...
@Configuration
@ComponentScan(basePackages = {
"com.production"
})
@PropertySource(value = {
"classpath:/application.properties",
"classpath:/environment-${FETTER_ENVIRONMENT}.properties"
})
@EnableJpaRepositories("com.production.repositories")
@EnableTransactionManagement
public class Config {
private static final String PROPERTY_NAME_DATABASE_URL = "db.url";
private static final String PROPERTY_NAME_DATABASE_USER = "db.user";
private static final String PROPERTY_NAME_DATABASE_PASSWORD = "db.password";
private static final String PROPERTY_NAME_HIBERNATE_DIALECT = "hibernate.dialect";
private static final String PROPERTY_NAME_HIBERNATE_FORMAT_SQL = "hibernate.format_sql";
private static final String PROPERTY_NAME_HIBERNATE_SHOW_SQL = "hibernate.show_sql";
private static final String PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN = "entitymanager.packages.to.scan";
@Resource
Environment environment;
Но я пытаюсь сделать это в другом классе, и это нуль. Я пробовал использовать @Resource
и @Autowired
и ручную инъекцию.
Есть ли что-то особенное в отношении Environment
, что предотвращает это?
@Component
public class Vendor {
private String token;
@Autowired
private Environment environment;
public Vendor() {
//get token from config
//Environment environment = (Environment) ApplicationContextProvider.getApplicationContext().getBean("environment");
setToken(environment.getProperty("api.vendor.token"));
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
}
Update: Я нашел this resource, который подчеркивает использование @Value
, но я не использую любой конфигурации XML в моем приложении.
Похоже, что это может быть то, что я ищу: Loading properties in Spring 3.1 programmatically
Я не думаю, что окружающая среда имеет отношение в чем-либо, кроме контекста приложения нагрузки. –
Есть ли другой способ получить элементы конфигурации из .properties файлов? – Webnet
Замечание '@ Value' приходит на ум, но вам придется настроить« PropertyPlaceholderConfigurer ». Не цитируйте меня на этом, но посмотрите. –