SpringApplication

SpringApplication

SpringApplication은 SpringApplicationContext를 뜻한다.

기존에는

이런식으로 만들었다. 하지만 이렇게 만들게 되면 커스텀하기가 굉장히 어렵다.

그래서 이것을 인스턴스변수로 바꿔서 실행을 해도 똑같은 결과를 얻을 수 있다.

강의에서 디버그 모드로 실행하는 방법에 대해 간략히 소개 해주었다.

vm option을 -Ddebug로 지정해주면 디버그 모드가 된다고 하는데 이클립스에는 없는 건지 아니면 못찾는 건지는 모르겠지만 아무튼 시간관계상 이거는 이런식으로 남겨두기로 하자.

FailureAnalyzer라는게 있는데 에러 메시지를 예쁘게 만들어주는 기능이라고 한다. 스프링 부트에는 많은 FailureAnalyzer가 존재한다고 한다. 또한, 사용자가 만들 수도 있다고 한다.

banner을 수정하는 방법이 있는데

이런식으로 수정할 수 있다. 간단히 resources폴더 밑에 banner.txt를 넣어주면 스프링 부트에서 이것을 읽고 실행해준다고 한다. 이것 또한 자동설정되있나 보다.

스프링 부트는 개발자에게 banner에 사용할 수 있는 다양한 변수를 제공하는데, 그 중에는 매니패스트 파일이 존재하지 않으면 실행되지 않는다. 스프링 부트에서 매니패스트파일을 만드는 방법은 packing하는 방법이 있는데, 스프링 부트에서는 다양한 의존성을 받는 jar파일을 생성해준다. 그렇게 되면 매니패스트 파일이 생성된다고한다.

다른 위치에 banner을 생성하고 싶다면, application.properties에 spring.banner.location 이라는 속성을 추가해주면 된다고 한다. 위에서 말은 않했지만 jpg파일이나 png파일도 가능하다고 한다.

배너를 끄고 싶다면

이렇게 작성한다.

또한, applicaion.setBanner()을 통해 자바코드로 배너를 구현할 수 있다.

텍스트 배너와 자바 배너가 동시에 실행이 된다면 텍스트 배너가 실행이 된다.

SpringApplication을 실행 시키는 방법에 대해 총 2가지를 알아봤는데 Builder를 이용하는 방법도 있다.

이런식으로 작성하면 된다. 참고로 ()사이에 아무것도 입력하지 않아도 .source(...)로 입력해주면 정상적으로 실행이 된다는 것을 확인 할 수 있다.

public class SampleListener implements ApplicationListener{ @Override public void onApplicationEvent(ApplicationStartingEvent event) { System.out.println("======================="); System.out.println("Application is starting"); System.out.println("======================="); } }

이런 클래스를 추가하게 되면 스프링부트가 실행이 될때 이것이 먼저 실행이 된다. 하지만 이건 빈 객체가 아니다. 원래 빈 객체로 만들어줘야 하지만 이 이벤트는 스프링부트가 실행이 되기전에 실행이 되기 때문에 bean으로 등록을 시켜줘도 큰 의미가 없다.

public static void main(String[] args) { SpringApplication application = new SpringApplication(SpringBootPracticeApplication.class); application.addListeners(new SampleListener()); application.run(args); }

그래서 이런식으로 강제적으로 lister을 등록 시켜줘야 한다.

(위에서는 args옆에 SpringBoot...class가 있었는데 그렇게 했을 때는 위 코드가 발생되지 않는다. 그래서 SpringApplication()안에 추가해 주었다.)

이런식으로 스프링이 시작되기전에 실행이 된다는 걸 확인 할 수 있다.

from http://b-programmer.tistory.com/15 by ccl(A) rewrite - 2020-03-21 02:54:28

댓글

이 블로그의 인기 게시물

2020 LCK 롤챔스 Spring 경기 재개 및 일정

데이터 바인딩 추상화 - propertyEditor

Spring Web Form