티스토리 뷰

Spring

SpringApplication - 2

kingsubin 2020. 7. 6. 17:30

 

1) ApplicationEvent 등록
- ApplicationContext를 만들기 전에 사용하는 리스너는 @Bean으로 등록할 수 없다.
- SpringApplication.addListners()

 

2) WebApplicationType 설정

 

3) 애플리케이션 아규먼트 사용하기

- ApplicationArguments를 빈으로 등록해 주니까 가져다 쓰면 된다.

 

4) 애플리케이션 실행한 뒤 뭔가 실행하고 싶을때

-  ApplicationRunner (추천) 또는 CommandLineRunner

-  순서 지정 가능 @Order

 


(1)

ApplicationContext가 만들어지기 전에 시작되는 이벤트는 빈으로 등록되어있더라도 실행되지 않는다.

 

해결법은 context에 직접 listener를 추가해준다.

context에 직접 추가 되었으므로 @Component는 필요가 없다.

 


그러면 ApplicationContext가 생성된 후에 발생하는 이벤트는 그냥 @Component로 빈으로만 등록하면 되는가 ?

 

ApplicationContext가 생성되고 발생하는 이벤트는 

ApplicationContext에 직접 추가하지않고 이벤트객체를 빈으로 등록시키면 이벤트가 작동한다.

중요한 점은 이벤트가 발생하는 시점이다.

 


(2)

기본적으로는 SERVLET 작동,

SpringWebFlux가 있을경우 REACTIVE 작동,

둘 다 없을경우 NONE 작동,

둘 다 있을경우 SERVLET 작동한다.

 


(3)

VM Option에 -Dfoo

Program Arguments에 --bar 추가

 

 

실행시 VM Option으로 추가한 foo는 없고,

Programe argument에 추가한 bar는 있다.

 

콘솔에서 실행시에는 어떨까 ?

결과는 같다.

 

JVM Option은 못받고 -- arguments만 받는다.

 

 ?) 어떨때 어떻게 사용하는지 잘 모르겠음.

 


(4)

ApplicationRunner를 구현하여 실행.

실행 결과는 같다.

 

러너가 여러개일경우에 @Order(숫자) 를 통해 순서를 지정한다.

낮은순서가 우선순위를 가진다.

 

※참조

www.inflearn.com/course/스프링부트/dashboard

'Spring' 카테고리의 다른 글

로깅 - 1부, 2부  (0) 2020.07.08
Profile  (0) 2020.07.08
외부설정 - 2부  (0) 2020.07.07
외부 설정 - 1부  (0) 2020.07.07
SpringApplication - 1  (0) 2020.07.04