스프링부트 활용

백기선님의 스프링부트 개념과 활용을 학습하며 정리한 내용입니다.

1. SpringApplication (1)

1-1. 로그 레벨

기본 로그레벨은 INFO로 설정되어 있습니다. 이 부분은 IntelliJ 서버 이름을 클릭 후 edit configuration 을 눌러 VM optionsProgram arguments 를 통해 레벨을 변경할 수 있습니다.

VM options 사용시 -Ddebug 옵션을 주고 apply 후 실행을 하면 Debug 로그 정보와 어떠한 자동설정들이 반영이 되었는지에 대한 정보를 확인할 수 있습니다.


1-2. 배너

스프링 서버가 시작될때 나오는 배너를 커스터마이징할 수 있습니다.

적용할때는 resources -> banner.txt 폴더 경로에 파일을 생성하여 내용을 입력해서 사용할 수 있습니다.

스크린샷 2019-08-11 오후 11 31 00

스크린샷 2019-08-11 오후 11 31 06

배너를 구성하는 다른 방법으로는 Banner 클래스를 구성하고 SpringApplication.setBanner() 로 설정이 가능하며 setBannerMode(Banner.Mode.OFF) 로 끌수도 있습니다.

배너를 포함한 다양한 실행 환경 옵션을 주고 싶을때 main 함수의 선언을 다음과 같이 설정할 수 있습니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
 public static void main(String[] args) {
//        SpringApplication.run(Application.class, args);

//        SpringApplication app = new SpringApplication(Application.class);
//        app.run(args);
        
            new SpringApplicationBuilder()
                    .sources(Application.class)
                    .run(args);
    }

2. SpringApplication (2)

2-1. 이벤트 리스너 등록하기

ApplicationContext가 생성된 후 발생한 이벤트들은 해당 이벤트리스너가 Bean으로 등록되어 있으면 자동적으로 호출해주지만 ApplicationContext가 생성되기 전에 발생한 이벤트는 스프링 애플리케이션을 따로 만들어서 리스너를 추가해주어야 합니다.

아래 예제는 ApplicationContext가 등록되기 이전에 이벤트리스너를 발생시키고 그에 따른 리스너를 추가해주는 방법입니다.

SampleListener

1
2
3
4
5
6
7
8
public class SampleListener implements ApplicationListener<ApplicationStartingEvent> {

    @Override
    public void onApplicationEvent(ApplicationStartingEvent event) {
        System.out.println("=======================");
        System.out.println("Application is Starting");
        System.out.println("=======================");
    }

main

1
2
3
4
5
6
public static void main(String[] args) {
        SpringApplication app = new SpringApplication(Application.class);
  //addListenrs에 인자로 이벤트 리스너 객체를 주입
        app.addListeners(new SampleListener());
        app.run(args);
    }

스크린샷 2019-08-27 오후 10 36 44

콘솔창에 위와 같이 리스너가 발생한 것을 확인할 수 있습니다.

그외에 ApplicationStartedEvent(@Component 빈 등록)는 ApplicationContext가 등록된 이후에 발생하는 이벤트이기 때문에 add로 추가하지 않아도 됩니다.


외부설정 1

외부설정 종류

  • properties 파일
  • YAML
  • 환경 변수
  • 커맨드라인 args


우선순위

  1. 홈 디렉토리의 spring-boot-dev-tools.properties
  2. 테스트의 @TestPropertySource
  3. @SpringBootTest 어노테이션의 properties Attribute
  4. 커맨드라인 args
  5. SPRING_APPLICATION_JSON 안에 프로퍼티

그외 JAR 밖에 있는 application.properties, JAR 안에 있는 application.properties 등등

@TestPropertySource


Reference