@PostContruct 란 무엇인가?
@PostConstruct는 함수에 붙는 어노테이션으로, 해당 어노테이션이 붙은 함수는 Bean이 만들어질 때 한 번 실행된다. Bean이 초기화된 이후에 데이터를 로딩해야 한다거나, 로깅을 해야 하는 경우 @PostContruct 어노테이션을 사용할 수 있다.
@PostContruct 사용해보기
예를 들어 검색 결과를 메모리에 저장해놓는 SearchInMemoryCache 클래스가 있다고 해보자. 이 클래스의 경우 초기화가 된 후 Bean으로 등록되자마자 초기 결과가 있어야 한다고 해보자. 이런 경우 다음과 같이 @PostContruct 어노테이션을 setUp 함수 위에 붙여서 초기 데이터를 세팅할 수 있다.
@Component
class SearchInMemoryCache() {
private val searchResults: MutableList<String> = mutableListOf()
@PostConstruct
fun setUp() {
searchResults.addAll(
listOf("Search Result 1", "Search Result 2")
)
println("Search results are loaded")
}
}
이렇게 만든 후 Bean을 등록하기 위해 나머지 코드를 작성해본 후 실행해보자.
@ComponentScan
@Configuration
class SearchConfiguration
fun main(args: Array<String>) {
val context = AnnotationConfigApplicationContext(SearchConfiguration::class.java)
}
그러면 다음과 같은 결과가 나오는 것을 볼 수 있다. Bean을 등록만 했는데, setUp 함수가 실행된 것을 볼 수 있다.
전체 코드: GitHub
이 프로젝트가 도움이 되셨다면 저장소에 Star⭐️를 눌러주세요! Stargazers는 다음 페이지에서 확인할 수 있습니다.
반응형