-
[스프링 부트 개념과 활용] SpringApplication 관련 정리SPRING/스프링부트 개념과 활용 2020. 12. 20. 12:20
Spring Boot 프로젝트에서는 프로젝트를 실행하는 방법이 아래와 같이 크게 3가지가 존재한다.
아래 소스의 2, 3번 방식의 경우 Customizing이 가능하다.
@SpringBootApplication public class Application { /* // 1: 기본적인 STATIC METHOD 방식 public static void main(String[] args) { SpringApplication.run(Application.class, args); } // 2: 객체선언 방식 public static void main(String[] args) { SpringApplication app = new SpringApplication(Application.class); app.run(args); } */ // 3: springApplicationBuilder 사용 방식 public static void main(String[] args) { new SpringApplicationBuilder() .sources(Application.class) .run(args); } }
Application Event
spring boot 애플리케이션이 시작할때나 시작 직후 등 시점에서 Event Listener를 통해 다양한 이벤트 들을 실행할 수 있다.
public class JumpListener implements ApplicationListener<ApplicationStartingEvent> { @Override public void onApplicationEvent(ApplicationStartingEvent applicationStartingEvent) { System.out.println("=================================="); System.out.println("Starting"); System.out.println("=================================="); } }
Application Context가 만들어지기 이전에 발생한 이벤트(예시 : ApplicationStartingEvent)는 아래와 같이 별도의 메서드를 통해 등록을 해줘야 한다.
Application Argument
Edit Confinfiguration에서 아래와 같이 Argument 설정이 가능하다.
-D : -D로 시작하는 옵션은 JVM옵션,
-- : --로 시작하는 옵션은 Application Argument이다.
아래와 같은 Component를 등록합니다.
@Component public class ArgTestComponent { public ArgTestComponent(ApplicationArguments arguments) { System.out.println("JUMP : " + arguments.containsOption("JUMP")); System.out.println("bar : " + arguments.containsOption("bar")); } }
위와 같이 설정 후 Application을 재실행하면 아래와 같은 결과가 나온다.
ApplicationRunner
ApplicationRunner는 Application을 실행하고 난 후, 추가적인 로직을 수행하고 싶을 때 사용한다.
클래스 생성후 ApplicationRunner를 Implements 한다.
@Component public class AppRunner implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { System.out.println("JUMP : " + args.containsOption("JUMP")); System.out.println("bar : " + args.containsOption("bar")); } }
'SPRING > 스프링부트 개념과 활용' 카테고리의 다른 글
[스프링 부트 개념과 활용] 스프링부트 로그 설정 (0) 2020.12.26 [스프링 부트 개념과 활용] 프로파일 관련 정리 (0) 2020.12.25 [스프링 부트 개념과 활용] 외부설정 - @ConfigurationProperties (0) 2020.12.25 [스프링 부트 개념과 활용] 외부설정 - Application.properties (0) 2020.12.24 [스프링 부트 개념과 활용] 자동 설정 @EnableAutoConfiguration (0) 2020.12.13