Spring framework/Spring boot

스프링부트 배너, Springboot banner, 스프링부트 웰컴 메시지 관리

마샤와 곰 2019. 12. 2. 11:39

 

스프링부트에서 배너(banner) 메시지를 관리하는 방법 입니다.

기본으로 스프링부트를 만들면 메인메소드는 아래처럼 되어 있습니다.

//..생략

@SpringBootApplication
@ServletComponentScan
public class 어플리케이션이름 extends SpringBootServletInitializer {
    public static void main(String[] args) {
        SpringApplication.run(어플리케이션이름.class, args);
    }
}

 

그리고 실행하면 아래사진처럼 배너가 출력되며 스프링부트 앱이 실행 됩니다.

요런거 많이들 보셨쥬?

 

보기 싫거나 변경이 필요하면 SpringApplication 클래스를 활용해서 환경설정을 바꾸어 주면 됩니다.

끄는(off, 제거)법은 클래스를 아래처럼 수정하면 됩니다.

import org.springframework.boot.Banner.Mode;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class 클래스이름 extends SpringBootServletInitializer  {

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(클래스이름.class);
        app.setBannerMode(Mode.CONSOLE);   //요 부분
        app.run(args);

}

 

요 부분이라고 보이는 곳이 바로 배너설정을 할 수 있는 부분 입니다.

해당 부분에서 Mode로 보이는 enum값은 자동완성기능을 살펴보면 3가지 정도로 사용가능 합니다.

Mode.OFF로 하면 더 이상 배너는 출력되지 않습니다.

OFF...OFF하면 꺼진다..

 

 

그리고 위 내용을 적용시키기 귀찮으면 resources 디렉토리에 banner.txt 파일을 만들어주면 됩니다.

banner.txt에 내가 원하는 내용을 적으면 그대로 출력 됩니다!

이런식으로 banner.txt를 만들고 공백을 입력하자.
이런식으로 원하는 내용을 출력 할 수도 있습니다!

 

 

앱 구동시 특정 행동을 정의하려면 ApplicationListener 클래스를 Bean 객체로 등록하여 사용하면 됩니다.

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

import org.springframework.boot.Banner.Mode;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Bean;
import org.springframework.context.event.ContextRefreshedEvent;

@SpringBootApplication
public class 어플리케이션 extends SpringBootServletInitializer  {

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(어플리케이션.class);
        app.setBannerMode(Mode.CONSOLE);  //배너끄기, 켜기
        app.run(args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(어플리케이션.class);
    }


    @Bean  //앱 구동 후 바로 동작
    public ApplicationListener<ContextRefreshedEvent> startupListener() {
        return new ApplicationListener<ContextRefreshedEvent>() {   
            public void onApplicationEvent(ContextRefreshedEvent event) {
                System.out.println(" - Start to listen : " + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss")));
                System.out.println(" - Porject build : 하하하");
            }
        };
    }	
}

 

빈 객체로 등록하고나면스프링 부트의 객체들이 준비가 되고나면 아래 정의한 내용이 바로 동작 합니다.

단순히 출력을 할 수 있으며, 특정 행위를 정의 할 수도 있습니다.

요렇게 잘 나옵니다~

 

 

반응형