Как использовать мои извлеченные свойства из @PropertySource - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь использовать @ PropertySource для загрузки свойств из файла .properties и использования их в моем Spring-пакете.

У меня естьфайл Config.java, который должен загружать эти свойства, файлы application.properties с данными в нем, и я пытаюсь получить доступ к этим данным с помощью экземпляра Config.java в другом файле.Но похоже, что объект Config пуст.

Это файл Config.java :

package demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;

@Configuration
@PropertySource("classpath:config/application.properties")
public class Config {

    @Autowired Environment env;

    //Attempt number 1
    @Value("${source.name}")
    public String name;

    //Attempt number 2
    public String getSource(){
        return env.getProperty("source.name"); 
    }

}

Файл application.properties :

source.name="OPTIQ"

И еще один файл, в котором я пытаюсь добраться до этой конкретной строки (я удалил много процессов, но важны только эти строки):

public class Process{

   @Autowired Config configuration;
   String source;

   public setSource(){
       this.source = configuration.source;
       // this.source = configuration.getSource();
   }

}

результат будет "OPTIQ", но объект конфигурации кажется пустым или не инициализирован, поэтому я предполагаю, что мне здесь не хватает одного шага или я не полностью понимаю, как работает @ PropertySource .

У меня нет ошибки доступа к файлу, он, похоже, находит файл.

Первый вопрос: какая попытка правильная:
- номер 1 с @Value?
- номер 2with public getSource ()?
Второй вопрос: что мне нужно изменить, чтобы сделать это правильно?

1 Ответ

0 голосов
/ 19 февраля 2019

Autowire org.springframework.core.env.Environment в вашем классе.Затем вы сможете получить доступ к свойствам, используя environment.getProperty(propertyName);

@Component
public class Process{
   @Autowired
   private Environment environment;
   public void yourMethod(){
  // access it as below wherever required.
   environment.getProperty(propertyName);
 }
}

Также добавьте @PropertySource в классе конфигурации.

@Configuration
@PropertySource("classpath:some.properties")
public class Config {

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...