Как получить значения application.prpoperty при весенней загрузке

Я хочу получить доступ к некоторым значениям из моего файла application.properties, я пытался использовать метод ниже, но не получил значения.

файл application.property

welcome.message=My message

Мойконтроллер.java

@RestController
class MessageRestController {
    @Autowired MainConfigFiles mainConfigFiles;
      
      @Value("${welcome.message}") 
      private String message;

      @RequestMapping("/message") 
      String getMessage() { 
          return this.message; 
      }

      @RequestMapping("/message2") 
      String getMessage2() { 
          MainConfigFiles a = new MainConfigFiles();
          String msg = a.getMessage2();
          System.out.println("Msg is....."+msg);
          return msg; 
      }

MainConfigFiles.java

@Configuration
@PropertySource(value = "application.properties")
public class MainConfigFiles {
    
     @Value("${welcome.message}") 
     private String message2;
     
    public String getMessage2() {
        return message2;
    }
}

Я могу получить значение, используя
@RequestMapping("/message"), который упоминается в том же файле, но не может получить значение при использовании @RequestMapping("/message2"), который упоминается в другом классе.

Вы должны запрашивать «mainconfigfiles» как «bean» … не через new. Итак: удалите a и используйте вместо него mainConfigFiles.getMessage2().

xerx593 15.10.2022 16:21

И я запускаю клиент конфигурации в этом же проекте, и значение из application.propertie не обновляется после выполнения запроса POST на localhost: 8080/actuator/refresh

oldMonk 15.10.2022 16:30

Пожалуйста, ответьте/примите/отредактируйте это... или задайте новый вопрос! :)

xerx593 17.10.2022 10:42
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сначала вам нужно прочитать значение welcome.message из файла application.properties и установить для него значение MainConfigFiles. Позже используйте этот класс MainConfigFiles (который вы уже используете @Autowire) и получите это сообщение.

Измените класс MainConfigFiles, как показано ниже.

public class MainConfigFiles {

Value("${welcome.message}")
private String message2;

Bean
public MainConfigFiles jpaConfig() {

    MainConfigFiles mainConfigFiles = new MainConfigFiles();
    mainConfigFiles.setMessage2(message2);
    return mainConfigFiles;
}

public String getMessage2() {
    return message2;
}

public void setMessage2(String message2) {
    this.message2 = message2;
}
}

Это ваш MessageRestController.

@RestController
public class MessageRestController {

@Autowired
private MainConfigFiles mainConfigFiles;

@Value("${welcome.message}")
private String message;

@RequestMapping("/message")
String getMessage() {
    return this.message;
}

@RequestMapping("/message2")
String getMessage2() {
    String msg = mainConfigFiles.getMessage2();
    System.out.println("Msg is....."+msg);
    return msg;
}
}

Другие вопросы по теме