changju / study-springboot

0 stars 0 forks source link

[4부: 스프링 부트 활용] 20. SpringApplication 2부 #10

Open changju opened 2 years ago

changju commented 2 years ago

4부: 스프링 부트 활용

20. SpringApplication 2부

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-spring-application.html#boot-features-application-events-and-listeners

changju commented 2 years ago

ApplicationEvent 등록

  1. ApplicationContext 만들기 전에 사용되는 리스너 설정하기
    public class StartingListener implements ApplicationListener<ApplicationStartingEvent>{
    @Override
    public void onApplicationEvent(ApplicationStartingEvent event) {
        System.out.println("===================");
        System.out.println("application is starting");
        System.out.println("===================");      
    }
    }
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication app =new SpringApplication(Application.class);
        app.addListeners(new StartingListener());
        app.run(args);
    }
}
  1. ApplicationContext 만들기 이 후 사용되는 리스너 설정하기
    @Component
    public class StartedListener implements ApplicationListener<ApplicationStartedEvent>{
    @Override
    public void onApplicationEvent(ApplicationStartedEvent event) {
        // TODO Auto-generated method stub
        System.out.println("===================");
        System.out.println("application is started");
        System.out.println("===================");  
    }
    }

changju commented 2 years ago
changju commented 2 years ago
// ArgumentListener을 bean 으로 등록을 하면서 생성자가 하나이면서
// 그 생성자의 파라미터가 bean 일 경우 spring이 알아서 주입을 해준다.
// @Component의 의미는 ApplicationContext 에 Bean을 등록을 하는데 등록을 하면서 생성자가 호출이 되어진다.
@Component
public class ArgumentListener {

    public ArgumentListener(ApplicationArguments arguments) {
        System.out.println("==========ArgumentListener==========");
        System.out.println("foo: " + arguments.containsOption("foo"));
        System.out.println("bar: " + arguments.containsOption("bar"));
        System.out.println("========================================");
    }
}