Java/Spring Boot

[Spring Boot] SpringApplicaton / Banner

hh_lin 2022. 3. 12. 16:49

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