@PostConstruct, @preDestroy

    @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도 같은 역할을 한다.

    'SPRING' 카테고리의 다른 글

    Bean Validation - 3  (0) 2023.12.20
    Bean Validation - 2(스프링 적용)  (1) 2023.12.20
    Bean Validation - 1  (0) 2023.12.19
    @Target, @Retention  (0) 2023.10.18
    간단한 Calc 만들기  (0) 2023.09.12

    댓글