-
SpringApplication - 2Spring 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(숫자) 를 통해 순서를 지정한다.
낮은순서가 우선순위를 가진다.
※참조
'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