본문 바로가기

Java/Spring Boot

[Spring Boot] SpringApplicaton / Banner

1. Spring Boot 활용 소개

 

Spring Boot 핵심 기술 각종 기술 연동
Spring Application Spring Web MVC
외부 설정 Spring Data
Profile Spring Security
Logging Rest API Client
Test 기타
Spring-Dev-Tools  

 

 

 

 

 

 

 

2. SpringApplicaton 

SpringApplication 실행 시 기본적으로 아래와 같이 실행했었는데, 

이렇게 하면 SpringApplication이 제공하는 다양한 커스터마이징 기능을 사용하기 어려움

SpringApplication.run(Application.class, args);

 

 

인스턴스를 만들고 run을 하는 방법으로 사용하면 됨

SpringApplication app = new SpringApplication(Application.class);
app.run(args);

 

 

Spring Boot Application을 실행하는 또 다른 방법 : SpringApplicationBuilder

new SpringApplicationBuilder()
   .sources(Application.class)
   .run(args);

 

 

 

 

 

 

3. FailureAnalyzers

  • application 에러 발생 시 에러 메시지를 좀 더 보기 좋게 출력해주는 기능
  • 기본적으로 Spring Boot Application에 여러가지 FailureAnalyzers 기능이 등록되어 있음
  • 직접 만들어서 등록할 수도 있음

 

 

 

 

 

 

4. 배너

Spring Boot 실행 시 보이는 아래 이미지가 배너

 

 

① 배너 변경하기

  • src/main/resources 밑에 banner.txt | gif | jpg | png 파일 추가 후 실행
  • 다른 경로에 놓고 싶다면, applicatoin.properties에 spring.banner.location 지정
  • 이미지 배너 사용 시, height, width, margin, ... 등도 지정 가능

 

# banner.txt

==================================
  kvp Spring Boot Study -- hhlin

  Spring Boot Version : ${spring-boot.version}
==================================

 

${spring-boot.version} 을 사용해서 Spring Boot Version 명시 가능

 

 

 

 

 

② MANIFEST 파일

일부는 MANIFEST 파일이 생성이 되어야만 찍히는 변수들이 있음

ex) ${application.version}, ${application.formatted-version}

 

mvn package 명령어로 패키징을 하게 되면, 

Spring Boot는 모든 의존성을 포함해서 하나의 jar 파일로 만들어주고 jar 파일만 실행해도 application이 실행됨

 

jar 파일로 패키징을 할 때 MANIFEST 파일도 만들어주기 때문에 jar 파일로 실행하게 되면

${application.version}, ${application.formatted-version} 도 확인 가능

 

${application.version} 출력 시, pom.xml에 명시한 version 정보가 출력됨

 

 

 

 

③ Banner 클래스 구현 및 SpringApplication.setBanner()로 설정

src/main/resources에 banner 파일이 있으면 setBanner() 보다 파일이 우선시 됨

/* 아래 lambda로 표현한 코드와 동일
app.setBanner(new Banner() {
    @Override
    public void printBanner(Environment environment, Class<?> sourceClass, PrintStream out) {
        out.println("=================");
        out.println("setBanner Test");
        out.println("=================");
    }
});
*/

app.setBanner((environment, sourceClass, out) -> {
   out.println("=================");
   out.println("setBanner Test");
   out.println("=================");
});

 

 

 

 

④ 배너 끄기

app.setBannerMode(Banner.Mode.OFF);

 

 

 

 

 

 

 

 

 

 

5. SpringApplicationBuilder로 빌더 패턴 사용 가능

SpringApplicationBuilder 역시 .banner()로 배너 설정 가능

/* 아래 lambda로 표현한 코드와 동일
.banner(new Banner() {
   @Override
   public void printBanner(Environment environment, Class<?> sourceClass, PrintStream out) {
      out.println("=================");
      out.println("printBanner Test");
      out.println("=================");
   }
})
*/

.banner((environment, sourceClass, out) -> {
    out.println("=================");
    out.println("printBanner Test");
    out.println("=================");
})

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard

 

스프링 부트 개념과 활용 - 인프런 | 강의

스프링 부트의 원리 및 여러 기능을 코딩을 통해 쉽게 이해하고 보다 적극적으로 사용할 수 있는 방법을 학습합니다., - 강의 소개 | 인프런...

www.inflearn.com

https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.spring-application

 

Core Features

Spring Boot lets you externalize your configuration so that you can work with the same application code in different environments. You can use a variety of external configuration sources, include Java properties files, YAML files, environment variables, an

docs.spring.io