2017-05-22 1 views
0

저는 봄 (Maven 사용) 프로젝트에서 작업하고 있습니다. 스프링 부트 배너를 사용자 정의하고 싶습니다. 내 banner.txt 파일에서 특정 배너 변수 ref과 JAVA_HOME과 같은 시스템 환경 변수에 액세스 할 수 있습니다.봄 부팅 응용 프로그램에서 현재 프로세스의 환경 변수를 설정하십시오.

내 banner.txt 파일

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

내 봄 부트 배너 내 현재 프로세스에서 좀 더 많은 정보를 표시 할. 그래서 현재 프로세스의 환경 변수를 설정하는 방법을 찾으려고합니다. 그래서 $ {JAVA_HOME}처럼 banner.txt에서 액세스 할 수 있습니다. 어떤 도움을 주시면 감사하겠습니다.

답변

0

${JAVA_HOME}과 같은 현재 프로세스의 변수가 너무 많습니다.

먼저 생각 : .properties에서

  1. 합격 변수 나 .yml 파일 받는다는 특성
  2. 합격 변수 :

    <property>banner url</property>

  3. 전달 명령 줄 인수

    java -jar <argument> <jar>

당신이 고정 표시기 데이터 컨테이너를 조사 할 수 런타임에서보다 유연한 뭔가를합니다.

+0

덕분에, @Sergey Rybalkin는 사실, 멀티 모듈 프로젝트에서 일하고 있어요 . 각 하위 모듈에는 productTitle과 같은 몇 가지 유사한 필드가 있지만 값은 다릅니다. 하나의 공통 응용 프로그램 속성 파일이 있습니다. 프로젝트를 실행할 때 스프링 부트 배너에 비슷한 필드 값 (각 하위 모듈에 대해 다른 값이 분명히 있음)을 표시하려고합니다. 그래서 그 필드/변수를 실행중인 프로세스 환경으로 설정하고이를 내 banner.txt 파일에서 호출하려고합니다. – neelrotno

+0

어쩌면 당신을 완전히 이해하지 못할 수도 있습니다. 그러나'XX : + PrintFlagsFinal'을 사용하면 jvm 인수를 로깅하는 것이 간단합니다. 인쇄 부팅 속성도 간단합니다. 너의 문제는 무엇인가? –

0

당신은 예를 들어, 배너를 사용자 정의 할 수 Banner인터페이스를 구현할 수 있습니다 : 당신이 JAVA_HOME 어떠한 시스템 환경 변수를 검색 할 수 있습니다

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으로. 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] 
관련 문제