SPRING
@PostConstruct, @preDestroy
devstep88
2023. 9. 26. 12:52
@PostConstruct
- 객체의 초기화 부분
- 객체가 생성된 후 별도의 초기화 작업을 위해 실행하는 메소드를 선언한다.
- @PostConstruct 어노테이션을 설정해놓은 init 메소드는 WAS가 띄워질 때 실행된다.
@PreDestroy
- 마지막 소멸 단계
- 스프링 컨테이너에서 객체(빈)를 제거하기 전에 해야할 작업이 있다면 메소드위에 사용하는 어노테이션.
- close() 하기 직전에 실행 -> ((AbstractApplicationContext) context).close()
package com.in28minutes.learnspirngframework.example.f1;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.PreDestroy;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import java.util.Arrays;
@Component
class SomeClass{
private SomeDependency someDependency;
public SomeClass(SomeDependency someDependency) {
this.someDependency = someDependency;
System.out.println("All depnedencies are ready!");
}
@PostConstruct
public void initialize(){
someDependency.getReady();
}
@PreDestroy
public void cleanUp(){
System.out.println("Clean Up");
}
}
@Component
class SomeDependency{
public void getReady() {
System.out.println("Some logic using SomeDependency@#!");
}
}
@Configuration
@ComponentScan
public class PrePostAnnotationsContextLauncherApplication {
public static void main(String[] args) {
try(var context = new AnnotationConfigApplicationContext(PrePostAnnotationsContextLauncherApplication.class)) {
Arrays.stream(context.getBeanDefinitionNames()).forEach(System.out::println);
}
}
}
All depnedencies are ready!
Some logic using SomeDependency@#!
org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.event.internalEventListenerProcessor
org.springframework.context.event.internalEventListenerFactory
prePostAnnotationsContextLauncherApplication
someClass
someDependency
Clean Up
java의 implements InitializingBean, DisposableBean도 같은 역할을 한다.