스프링 공부 4일차

MessageSource

ApplicationContext에 있는 기능. 국제화 기능을 제공한다.

 

ApplicatioEventPublisher

ApplicationEvent를 상속받아서 사용하지만 스프링 4.2부터는 상속받지 않아도 이벤트를 사용할 수 있게 되었다.

 

사용예제

public class MyEvent {
    private Object source;
    private int data;

    public MyEvent(Object source,int data) {
        this.source=source;
        this.data=data;
    }
    public Object getSource(){
        return source;
    }
    public int getData(){
        return data;
    }
}

@Component
public class MyEventHandler  {
    @EventListener
    public void A(MyEvent myEvent) {
        System.out.println(Thread.currentThread().toString());
        System.out.println("데이터는"+myEvent.getData());
    }
}


@Component
public class AnotherHandler {
@EventListener
    public void handle(MyEvent myEvent){
    System.out.println(Thread.currentThread().toString());
    System.out.println("Another"+myEvent.getData());
}
}


@Component
public class AppRunner implements ApplicationRunner {
    @Autowired
    ApplicationEventPublisher publisher;
    @Override
    public void run(ApplicationArguments args) throws Exception {
        publisher.publishEvent(new MyEvent(this,100));
    }
}


기본적으로 synchronized이지만 비동기적으로 실행시키고 싶을시 @Async를 붙인다.

 

기본 이벤트 기능

ContextRefreshedEvent :applicationContext를 초기화 하거나, 리프레쉬를 했을때

ContextStartedEvent: applicationContext를 start()를 하여 라이프사이클 빈들이 시작신호를 받은 시점

ContextStoppedEvent: applicationContext를 stop()하여 라이프사이클 빈들이 정지신호를 받은 시점

ContextClosedEvent:applicationContext를 close()를 사여 싱글톤 빈이 소멸되는 시점

RequestHandleEvent: HTTP 요청을 처리했을때

 


ResourceLoader

리소스를 읽어오는 기능 제공.

 

예제

@Component
public class AppRunner implements ApplicationRunner {
    @Autowired
    ResourceLoader resourceLoader;

    @Override
    public void run(ApplicationArguments args) throws Exception {
        Resource resource=resourceLoader.getResource("classpath:test.txt");
        System.out.println(resource.exists());
        System.out.println(resource.getDescription());
        System.out.println(Files.readString(Path.of(resource.getURI()))); //test.txt.내용 출력
    }
}

'Web > Spring Boot' 카테고리의 다른 글

ObjectMapper  (0) 2021.05.08
스프링부트 공부 5일차  (0) 2020.12.19
스프링 공부 3일차  (0) 2020.12.13
스프링부트 공부 2일차  (0) 2020.12.09
스프링부트 공부 1일차  (0) 2020.12.06