#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());
}
}