@Value проблем инъекционной неудача

1. Первый шаг, чтобы обнаружить синтаксис является правильным

@Value ( " $ {испытание} " )
 частный тест строки;

2. Во-вторых, если сконфигурирован для обнаружения файла конфигурации

URL = тест 
имя пользователя = имя пользователя
пароль = пароль

3. Третий шаг заключается в выявлении ли увеличение @Component комментарий

Весной, использованию аннотаций весной, то вам нужно использовать пружину для управления объектами, а не сами по себе новой, в противном случае это приведет к провалу.

@Component    // объекты класса удалось быть пружинные 
общественного  класса DbUtils { 

    @value ( "URL $ {}" )  
     Частная строка URL; 
    @value ( "имя пользователя $ {}" )  
     Частная строка имя пользователя; 
    @value ( «{$ } пароль " )  
     Частная строка пароля; 

}

4. На четвертом этапе написания кода обнаружения режима

У больше не участвовать в конструкторе, в эксплуатацию новых объектов. В противном случае это приведет к @value комментарий не удалось. (Я вышел на этом шаге состоит в яму).

   @PostConstruct первоначальный контекст может быть использован для инициализации записи, он закончит загрузочную информацию пружинной, позвонить и вызвать только один раз.

5. @ Value не может быть введен в статические свойства

@Value использовать непосредственно на статические свойства не могут быть введены содержание !!! таким образом всегда будет нулевым.

Причина
была найдена @value не впрыскивается непосредственно к значению статического свойства, пружина не позволяет / не поддерживает значение впрыскивается в статическом переменный, пружинной опоре метод набора для инъекций, мы можем использовать нестатический сеттер инъекционные метода статические переменные и классы должны использовать @value .. платить весна управляется так же , как @Autowired не может вводить одни и те же
детали: https://blog.csdn.net/sqlgao22/article/details/100100314

улучшать

Методы использования инкубационного назначение атрибутов и инкубационные методы не могут иметь статические

Идея метода будет сгенерирован автоматически статичным, вы должны быть удалены вручную.

@Component    // класс к прыжку объектов управляемого 
общественного  класса DbUtils { 

    Private  статической Строка URL;
     Private  Статической строки имя пользователь;
     Private  Статической строки пароль; 

    @value ( «{$ URL}»)   // удалить статический 
    публичный  недействительный setUrl ( URL String) { 
        DBUtils.url = URL; 
    } 
    @value ( "имя пользователя $ {}" )
     общественного  недействительными setUsername (String имя пользователя) { 
        DBUtils.username = имя пользователя; 
    } 
    @value ("$ {пароль}" )
     общественного  недействительный SetPassword (String пароль) { 
        DBUtils.password = пароль; 
    } 
    // 查看是否注入
    общественности  статической  недействительным прибудете () { 
        System.out.println ( "===== ===== URL" + URL); 
        System.out.println ( "===== ===== имя пользователя" + имя пользователя); 
        System.out.println ( "===== пароль =====" + пароль); 
    } 
}

тест

    @RequestMapping ( "/ получить" ) 
    @ResponseBody 
    общественного Струнный Get () { 
        DBUtils.get (); 
        вернуться «получить» ; 
    }

 

После выхода теста:


Здесь Insert Picture Описание


Успешно впрыскивается атрибуты.

 

Статья оттиск: https://blog.csdn.net/sqlgao22/article/details/100096348

рекомендация

отwww.cnblogs.com/nhdlb/p/11741228.html