728x90
발단
RedisTemplate 의 connectionFactory 를 Bean 으로 등록된 RedisConnectionFactory 로 사용하는 예제가 많은데 왜 그래야 하는지 설명이 없어 궁금하여 찾아보게 되었다.
(Bean 으로 등록하여 사용하지 않으면 `LettuceConnectionFactory was not initialized through afterPropertiesSet()` 오류가 발생한다.)
설명
- Spring 에서 Redis 서버와의 연결을 위해 getConnection 메서드를 호출한다.
- getConnection 메서드 내부에는 assertInitialized 검증 메서드를 호출한다.
- assertIntialized 는 initalized 변수를 통해 초기화 여부를 판단하는데, 해당 변수의 값 세팅을 afterPropertiesSet 메서드가 처리한다.
- afterPropertiesSet 메서드는 InitializingBean 의 구현체가 가지는 메서드로써 bean 이 초기화 될 때 호출된다.
- 즉, redis template 의 connectionFactory 를 등록시킬 때 Bean 으로 등록된 factory 를 등록해야지 검증 과정을 통과할 수 있게 된다.
상세 설명
Bean 으로 등록하지 않은 connection factory 사용시 오류 발생
- getConnection 에서 문제가 발생한걸 확인할 수 있다.
GetConnection
- assertInitialized() 메서드 호출을 통해 검증 과정을 거친다.
assertInitialized()
- initialized 변수로 assert 를 통해 확인한다.
afterPropertiesSet() 메서드(initialized 변수 초기화 시점)
- Bean 으로 등록되면 afterPropertiesSet 메서드를 Bean 초기화 시점에 호출하게 될 것이고, 초기화 변수가 세팅되게 된다.
728x90