Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在spring引导应用程序中为当前进程设置环境变量_Java_Spring_Maven_Spring Boot_Environment Variables - Fatal编程技术网

Java 在spring引导应用程序中为当前进程设置环境变量

Java 在spring引导应用程序中为当前进程设置环境变量,java,spring,maven,spring-boot,environment-variables,Java,Spring,Maven,Spring Boot,Environment Variables,我正在从事一个spring(与maven合作)项目。我想定制我的春季战靴横幅。在我的banner.txt文件中,我可以访问一些指定的banner变量以及系统环境变量,如JAVA_HOME 我的banner.txt文件 :: Spring Version :: ${spring-boot.formatted-version} :: Java Home :: ${JAVA_HOME} 我想在我的spring boot横幅中显示我当前进程的更多信息。因此,我试图找到一种方法,为当前流程的环境设置一些

我正在从事一个spring(与maven合作)项目。我想定制我的春季战靴横幅。在我的banner.txt文件中,我可以访问一些指定的banner变量以及系统环境变量,如JAVA_HOME

我的banner.txt文件

:: Spring Version :: ${spring-boot.formatted-version}
:: Java Home :: ${JAVA_HOME}

我想在我的spring boot横幅中显示我当前进程的更多信息。因此,我试图找到一种方法,为当前流程的环境设置一些变量。这样我就可以从banner.txt访问它们,比如${JAVA_HOME}。任何帮助都将不胜感激。

当前流程的变量,如
${JAVA_HOME}
对于您的案例来说太多了

首先想想:

  • .properties
    .yml
    文件中传递变量
  • 在maven属性中传递变量:

    横幅url

  • 传递命令行参数

    java-jar


  • 如果您希望在运行时更灵活,您可以调查docker数据容器。

    您可以实现
    横幅
    界面来自定义横幅,例如:

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

    谢谢,@Sergey Rybalkin实际上,我正在做一个多模块项目。每个子模块都有一些类似的字段(如productTitle),但值不同。我有一个通用的应用程序属性文件。当我运行我的项目时,我想在我的spring引导横幅中显示类似的字段值(每个子模块的值明显不同)。因此,我只想将这些字段/变量设置为正在运行的进程的环境,并在banner.txt文件中调用它们。也许我不完全理解您的意思。但是使用
    XX:+PrintFlagsFinal
    记录jvm参数很简单。打印引导属性也很简单。你有什么问题?