java - 在 Java Spring 框架中登录控制台是如何工作的
问题描述
我有一个非常简单的 Spring 应用程序,但我无法将System.out.println
语句打印到控制台中。
这是我打印文件中设置的环境变量的主要应用程序.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;
}
}
最后是属性 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
要在终端中显示的变量。我见过一些人使用带有请求端点的控制器来调试浏览器中的环境变量的例子。那是唯一的选择吗?
解决方案
对您的代码进行了几处更改,您不需要使用new
关键字来启动spring应用程序,您可以直接使用静态运行方法
public static void main(String[] args) {
SpringApplication.run(MainApplication.class);
}
第二件事,该run
方法只有在该类实现CommandLineRunnerMainApplication
时才会执行
@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());
}
}
推荐阅读
- google-cloud-platform - 有没有一种快速的方法可以一次删除 VPC 及其所有依赖项?
- django - Django Api 只读字段
- scala - 在类型函数中使用匹配类型时证明类型相等的问题
- html - 为什么我不能只更改最后一个 h3 的字体大小
- huawei-mobile-services - 我已经成功集成了HUAWEI Location Kit。但现在得到错误权限被拒绝
- python - 在 15*8-2**x=x 中求解 x 的公式求解器未完成计算
- airflow - 使用 .net 控制台批处理应用程序进行气流编排
- javascript - Snowpack 无法从 node_modules 导入 JavaScript
- arrays - 如何将一个随机预制件限制为仅使用一次,但将一大堆预制件随机放置在其他对象之上?
- javascript - 如何解决:安装 PDF 而不是用 react-pdf 打开?