次の例のように、バナーをカスタマイズするBanner
インタフェースを実装することができます:environment
変数で
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());
}
}
あなたが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 : [email protected]
おかげで、@Sergey Rybalkinは実は、私はマルチモジュールプロジェクトに取り組んでいます。各子モジュールには、同様のフィールド(productTitleなど)がありますが、値は異なります。また、共通のアプリケーションプロパティファイルが1つあります。私のプロジェクトを実行するとき、私は春のブートバナーの中で、同様のフィールド値(明らかに各子モジュールごとに異なる値)を表示する必要があります。だから私は、実行中のプロセスの環境にこれらのフィールド/変数を設定し、私のbanner.txtファイルでそれらを呼び出すだけです。 – neelrotno
私はあなたを完全に理解していないかもしれません。しかし、 '' XX:+ PrintFlagsFinal'でjvm引数を記録するのは簡単です。印刷ブートプロパティも簡単です。あなたの問題は何ですか? –