공부/Spring
Spring @Order 로 Bean 순서 정의하기
뮻
2021. 2. 15. 21:28
스프링의 @Order 어노테이션은 컴포넌트나 빈의 로드 순서를 정의할 수 있다.
같은 타입의 빈이 Autowired 될 때 그 순서를 @Order를 이용하여 정의하는 것이다.
예시 코드는 아래와 같다.
오른쪽 테스트 코드를 보면 List<Rideable> 타입을 Autowired 할 때 @Order에 정의된 순서대로 불러오게 된다.
@Order를 자세히 보게 되면 값에는 정수형이 들어가고 기본 값은 Ordered.LOWEST_PRECEDENCE이다.
Ordered.LOWEST_PRECEDENCE를 보게 되면 아래와 같고 정수의 최댓값을 나타내며 가장 낮은 우선순위를 뜻한다.
가장 우선순위를 높게 하기 위해선 정수형의 최댓값인 Ordered.HIGHEST_PRECEDENCE를 이용하면 된다.
@Order의 값이 중복될 경우 동일 패키지에 존재 시 클래스명 오름차순으로 주입되고,
다른 패키지일 경우 패키지명 오름차순으로 주입되는 것을 확인하였다.
@Configuration 빈에 사용하여 설정의 우선순위를 두어 사용하는 것도 가능하다.
스프링 시큐리티에서 멀티 로그인 구현 시 시큐리티 설정 파일의 우선순위를 두어 사용한 적이 있었다.
또한 필터에도 우선순위를 두어 사용할 수 도 있을 것이다.
소스 파일은 깃허브에서 확인 가능합니다.
반응형