[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예
[질문 내용]
안녕하세요?
강의의 마지막 부분의 내용에 대해 문의드리고 싶습니다.
해당 내용은 다음과 같습니다.
-------------------------------------
@Primary, @Qualifier 활용
코드에서 자주 사용하는 메인 데이터베이스의 커넥션을 획득하는 스프링 빈이 있고, 코드에서 특별한 기능으로 가끔 사용하는 서브 데이터베이스의 커넥션을 획득하는 스프링 빈이 있다고 생각해보자.
메인 데이터베이스의 커넥션을 획득하는 스프링 빈은 @Primary 를 적용해서 조회하는 곳에서 @Qualifier 지정 없이 편리하게 조회하고, 서브 데이터베이스 커넥션 빈을 획득할 때는 @Qualifier 를 지정해서 명시적으로 획득하는 방식으로 사용하면 코드를 깔끔하게 유지할 수 있다.
물론 이때 메인 데이터베이스의 스프링 빈을 등록할 때 @Qualifier 를 지정해주는 것은 상관없다.
우선순위
@Primary 는 기본값처럼 동작하는 것이고, @Qualifier 는 매우 상세하게 동작한다.
이런 경우 어떤 것이 우선권을 가져갈까?
스프링은 자동보다는 수동이, 넒은 범위의 선택권 보다는 좁은 범위의 선택권이 우선 순위가 높다.
따라서 여기서도 @Qualifier 가 우선권이 높다.
-------------------------------------
마지막에 말씀하신 우선순위 순서에 대한 내용을 제가 이해한 바에 따르면 스프링은 가장 먼저 @Qualifier 이름으로 빈을 찾고, 없으면 @Primary 를 선택하게 됩니다.
즉, @Qualifier 를 먼저 조회한 후, @Primary 를 조회합니다.
그렇게 되면 @Qualifier 가 적용된 서브 db의 커넥션을 먼저 조회하고, @Primary 가 적용된 메인 db의 커넥션은 나중에 조회할 것이라는 생각이 드는데 맞는 걸까요?
우선권이라는 말이 조금 헷갈리네요.
답변 주시면 감사드리겠습니다.
넵! 답변 주셔서 정말 감사합니다 !!