Невозможно прочитать значения из файла свойств с помощью @value или с помощью Autowired to Enviroment - PullRequest
3 голосов
/ 15 апреля 2019

У меня есть два файла свойств в моем загрузочном проекте Spring.И я могу читать свойства обоих в одном классе.Но то же самое значение, когда я пытаюсь читать из другого класса, используя @Value или с помощью Autowired Environment, оно дает мне нулевое значение.

    prop.name=test /*   property file value */

    @Component
    public class TestUtil { // This is the class giving me null value

        @Value("${prop.name}")
        String st;

        public String getTestString()
        {
            System.out.println(st+ " ***");
            return st;

        }
    }

//Using @Autowired Enviroment
public class TestUtil {

    @Autowired
    private Environment env;


    public String getTestString()
    {
        System.out.println(env.getProperty("prop.name")+ " ***");
        return env.getProperty("prop.name");

    }
}

/* Class below giving me value from properties file*/

        public class JsonWriter extends JsonResponseWriter {

        @Value("${prop.name}")
        private String contentsMenus;

      /* Some method*/
       System.err.println("from JsonWriter  "+contentsMenus);

Здесь я использую автопроводку

@Service
public class ResponseUtil {
    @Autowired
     private TestUtil util ;

В вышеуказанном классе я использую autowired

Ответы [ 4 ]

3 голосов
/ 15 апреля 2019

Вам не хватает знака доллара в аннотации Value.Это должно сделать работу:

@Value("${prop.name}")
1 голос
/ 15 апреля 2019

Попробуйте этот кусок кода

@Component
public class TestUtil {

@Autowired
private Environment env;


  public String getTestString(){
    System.out.println(env.getProperty("prop.name")+ " ***");
    return env.getProperty("prop.name");

  }
}
1 голос
/ 15 апреля 2019

используйте $ в именах свойств: например:

@Value("${prop.name}")
0 голосов
/ 15 апреля 2019

После того, как комментарии М. Дейнма проанализировали код и обнаружили, что первый класс, из которого я вызывал другой класс, не был подключен автоматически. Так что после автоматического подключения класс работал. Большое спасибо @ M.Deinum и всем пользователям, которые ответили на мой вопрос.

...