在spring boot application

时间:2017-05-22 07:54:56

标签: java spring maven spring-boot environment-variables

我正在做一个春天(带maven)项目。我想自定义我的春季引导横幅。在我的banner.txt文件中,我可以访问一些指定的横幅变量ref以及系统环境变量,如JAVA_HOME。

我的banner.txt文件

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

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

2 个答案:

答案 0 :(得分:0)

.properties等当前流程的变量对您的情况来说太过分了。

首先想一想:

  1. .yml<property>banner url</property>个文件中传递变量
  2. 在maven属性中传递变量:

    java -jar <argument> <jar>

  3. 传递命令行参数

    {{1}}

  4. 如果您想在运行时更灵活,可以调查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