일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- jdk
- LSP
- la-piscine
- MethodArea
- 포함관계
- java
- 상속관계
- 바이트코드
- Operating System
- 운영체제
- 라피신
- HeapArea
- JVM
- javac
- Compiler
- StackArea
- 자바컴파일러
- RDD
- 제네릭스
- JIT
- abstract
- 도커네트워크
- pg_hba.conf
- generics
- SRP
- 42서울
- 참조변수
- 42seoul
- 이노베이션아카데미
- classloader
- Today
- Total
while(1) 작심삼일();
빈 생명주기 콜백 본문
스프링 빈의 이벤트 라이프사이클
스프링컨테이너생성 -> 스프링빈생성 -> 의존관계주입 -> 초기화 콜백 -> 사용 -> 소멸 전 콜백 -> 스프링 종료
초기화 콜백: 빈이 생성되고, 빈의 의존관계 주입이 완료된 후 호출
소멸전 콜백: 빈이 소멸되기 직전에 호출
스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려주는 다양한 기능을 제공한다. 또한 스프링은 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 준다. 따라서 안전하게 종료 작업을 진행할 수 있다. 3가지 방법으로 빈 생명주기 콜백을 지원한다.
@인터페이스 (InitializingBean, DisposableBean)
public class NetworkClient implements InitializingBean, DisposableBean {
@Override
public void afterPropertiesSet() throws Exception {}
@Override
public void destroy() throws Exception {}
}
스프링 전용 인터페이스이고, 해당 코드가 인터페이스에 의존해야하고, 내가 고칠 수 없는 외부 라이브러리에 적용이 불가능하다.
빈 등록 초기화, 소멸 메소드 지정
설정 정보에 @Bean(initMethod = "init", destroyMethod = "close") 처럼 초기화, 소멸 메서드를
지정할 수 있다.
public class NetworkClient {
public void init() {}
public void close() {}
}
@Configuration
static class LifeCycleConfig {
@Bean(initMethod = "init", destroyMethod = "close")
public NetworkClient networkClient() {
NetworkClient networkClient = new NetworkClient();
return networkClient;
}
}
@PostConstruct, @PreDestroy
public class NetworkClient {
@PostConstruct
public void init() {}
@PostConstruct
public void close() {}
}
가장 편리하게 사용할 수 있어 최신 스프링에서 가장 권장하는 방법이다. 스프링 기술이 아닌 자바 표준이다. 외부 라이브러리는 사용이 불가하므로 이때는 빈 등록할 때 지정해서 사용하면 된다.
※ 스프링 핵심 원리 - 기본편(김영한)을 수강하고 정리한 글입니다. inf.run/2oxX
스프링 핵심 원리 - 기본편 - 인프런
스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다. 초급 프레임워크 및 라이브러리 웹 개발 서버 개발 Back-End Spring 객체지향 온
www.inflearn.com
'CS > spring' 카테고리의 다른 글
인텔리제이에서 깃허브 사용하기 (1) | 2021.02.06 |
---|---|
빈 스코프 (0) | 2021.01.29 |
@Autowired시 조회되는 빈이 다수일 때 사용법 (0) | 2021.01.29 |
@RequiredArgsConstructor (0) | 2021.01.29 |
의존관계 자동 주입 (0) | 2021.01.29 |