오늘 소개할 어노테이션은 다음과 같다.
- @PostConstruct
- @PreDestroy
해당 메서드를 이해하려면 Bean 생명주기(Life Cycle) 에 대해서 이해를 해야한다.
예전에 스프링이 지금처럼 활발하지 않을때는 인터페이스로 빈을 관리하거나,
@Bean(initMethod = "initialize", destroyMethod = "close")
이런식으로 빈을 생성하여 시작시, 종료시 행해지는 메서드들을 정의하곤 했다.
그래서 최신 기술로는 오늘 소개하는 @PostConstruct, @PreDestroy 이 두 annotation을 사용하는것이 권장된다.
annotation에 대해서는 아래 참고 포스팅 참고 바란다.
@PostConstruct
Spring은 bean을 초기화 한 이후에 @PostConstruct을 한번만 호출한다.
즉 @PostConstruct는 WAS 가 뜰 때 bean이 생성된 다음 딱 한번만 실행된다.
따라서 @PostConstruct 를 사용하여 기본 사용자라던가, 딱 한번만 등록하면 되는 key 값 등을 등록하여 사용할 수 있다.
사용법은 다음과 같다.
이해하기 쉽게 초기에 한번 실행되는 의미로 init 이라는 함수로 만들었다.
@Component public class Init { @Autowired private UsRepository usRepository; @PostConstruct private void init() { // 초기화 처리 User test = new User("test", "test"); User tt = new User("tt", "tt"); usRepository.save(test, tt); } } |
@PreDestroy
@PreDestroy 역시 Spring이 애플리케이션 컨텍스트에서 bean을 제거하기 직전에 단 한 번만 실행된다.
@Component public class UsRepository { private Connection dbConnection; @PreDestroy public void preDestroy() { // 자원 반환 등 종료 처리 dbConnection.close(); } } |
하지만 현재는 , 정확히 말하면 자바 9버전 이후로는 deprecated 되어 추가 dependency를 설정해줘야한다.
<dependency> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> <version>1.3.2</version> </dependency> |
참고 포스팅
https://thenicesj.tistory.com/91
https://thenicesj.tistory.com/269
'IT > Java' 카테고리의 다른 글
HttpServletRequest, HttpServletResponse에 대한 이해 (36) | 2023.06.24 |
---|---|
spring-boot-maven-plugin (33) | 2023.06.22 |
JVM 내에 저장되어있는 데이터 위치 값 확인 (32) | 2023.06.18 |
Optional – orElse() 와 orElseGet() (37) | 2023.06.16 |
[eclipse] Ant 란? (36) | 2023.06.15 |
댓글