我正在做一个春天(带maven)项目。我想自定义我的春季引导横幅。在我的banner.txt文件中,我可以访问一些指定的横幅变量ref
以及系统环境变量,如JAVA_HOME。
我的banner.txt文件
:: Spring Version :: ${spring-boot.formatted-version}
:: Java Home :: ${JAVA_HOME}
我想在春季启动横幅中显示当前流程中的更多信息。所以我试图找到一种方法来为当前进程设置一些变量到环境中。所以我可以从我的banner.txt访问它们,如$ {JAVA_HOME}。任何帮助将不胜感激。
答案 0 :(得分:0)
.properties
等当前流程的变量对您的情况来说太过分了。
首先想一想:
.yml
或<property>banner url</property>
个文件中传递变量在maven属性中传递变量:
java -jar <argument> <jar>
传递命令行参数
{{1}}
如果您想在运行时更灵活,可以调查docker数据容器。
答案 1 :(得分:0)
您可以实施Banner
界面来自定义横幅广告,例如:
public class CustomBanner implements Banner {
@Override
public void printBanner(Environment environment, Class<?> aClass, PrintStream printStream) {
printStream.println("|==================================|");
printStream.println("|----------My Demo Module----------|");
printStream.println("|==================================|");
printStream.println("|>>> Java Home : " + environment.getProperty("JAVA_HOME"));
printStream.println("|>>> Process Id : " + ManagementFactory.getRuntimeMXBean().getName());
}
}
使用environment
变量,您可以将任何系统环境变量检索为JAVA_HOME
。使用printStream
变量,您可以自定义输出。
最后你必须修改你的类引导,例如:
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(DemoApplication.class);
app.setBanner(new CustomBanner());
app.run(args);
}
}
<强>输出:强>
|==================================|
|----------My Demo Module----------|
|==================================|
|>>> Java Home : /usr/bin/java
|>>> Process Id : 14548@Juans-MacBook-Pro.local