Как работает вход в консоль в Java Spring Framework

#java #spring #spring-boot #spring-mvc

#java #spring #spring-boot #spring-mvc

Вопрос:

У меня есть очень простое приложение Spring, но я не могу не получить System.out.println инструкцию для печати в консоли.

Это основной файл приложения, в котором я печатаю переменную env, установленную в .yml файле

 import path.config.Config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MainApplication {

    @Autowired
    private Config config;

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(MainApplication.class);
        app.run();
    }

    public void run(String... args) throws Exception {
        System.out.println("env: "   config.getEnv());
    }

}
  

Файл конфигурации выглядит следующим образом:

 import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableConfigurationProperties
@ConfigurationProperties
public class Config {
    private String env;

    public void setEnv(String env) {
        this.env = env;
    }

    public String getEnv() {
        return this.env;
    }
}
  

Наконец, файл properties yml

 spring: 
    profiles.active: dev
    h2:
        console:
            enabled: true
---
spring:
    profiles: dev
env: dev
---
spring:
    profiles: test
env: test
---
spring:
    profiles: prod
env: prod
  

Приложение Spring создает и работает нормально, однако я не вижу env переменную для отображения в терминале. Я видел примеры людей, использующих контроллеры с конечной точкой запроса только для отладки переменных среды в браузере. Это единственный вариант?

Комментарии:

1. вы не получаете никаких журналов в консоли? запускается ли ваше приложение?

2. приложение запускается. Я вижу все процессы инициализации Spring в консоли (tomcat, h2 и т.д.), Но не уверен, как найти стандартные журналы с Systemm.out.println

3. проверьте мой ответ @chris

Ответ №1:

Пара изменений в вашем коде, вам не нужно использовать new ключевое слово для запуска приложения spring, вы можете напрямую использовать статический метод run

  public static void main(String[] args) {
    SpringApplication.run(MainApplication.class);
  
}
  

Во-вторых, run метод в MainApplication будет выполняться только в том случае, если этот класс реализует CommandLineRunner

 @SpringBootApplication
public class MainApplication implements CommandLineRunner {

    @Autowired
    private Config config;

    public static void main(String[] args) {
          SpringApplication.run(MainApplication.class);
    }

    public void run(String... args) throws Exception {
          System.out.println("env: "   config.getEnv());
     }

  }