프로그래밍/Spring & Spring boot

12 Spring : bean 초기화, 소멸 설정하기(init-method , ditory-method)

pupu91 2022. 9. 2. 16:34
반응형

 

 

초기화와 소멸 메소드

: IoC 컨테이너가 Bean 객체를 생성할 때 bean 초기화가 필요하면 initMethod를 설정하고,

  IoC 컨테이너가 Bean 객체를 소멸시킬 때 자원 반납 등의 처리가 필요하면 destroyMethod를 설정함.

 

 

 

 

1. inti 메소드와 distory메소드에 사용할 출력문 작성하기

 

 

 

 

 

2. inimtMethod 와 destoryMethed 설정하기

 

   (1)  빈 등록시 설정하기

        @Bean(initMethod ="  ", destroyMethod = "  " ) 출력할메소드이름을 값으로 설정

@Bean(initMethod = "openShop", destroyMethod = "closeShop")
public Owner owner() {
		
  return new Owner();
}

 

 

 

 (2) PostConstruct와 @PreDestroy로 설정하기

@Component
public class Owner {
	
    init-method와 같은 설정 어노테이션
	@PostConstruct
	public void openShop() {
		System.out.println("사장님이 가게 문을 오픈했습니다. 이제 쇼핑을 하실 수 있습니다.");
	}
	
	destroy-method와 같은 설정 어노테이션
	@PreDestroy
	public void closeShop() {
		System.out.println("사장님이 가게 문을 닫았습니다. 이제 쇼핑을 하실 수 없습니다.");
	}
}

 

 

 

 

3. 강제로 컨테이너를 종료 시키는 메소드를 호출

: 가비지 컬렉터에서 해당 빈을 메모리에서 지울 때 destoryMethod가 동작하게 되는데

  현재 예시에서는 메모리에서 지우기 전에 main 메소드의 프로세스가 종료 되어서 호출되고 있지 않으므로

  강제로 컨테이너를 종료 시키는 메소드를 호출하여 폐기 메소드가 동작하게함.

((AnnotationConfigApplicationContext)context).close();

 

 

 

 

4. 초기화와 소멸 확인

반응형