공부/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 빈에 사용하여 설정의 우선순위를 두어 사용하는 것도 가능하다.

스프링 시큐리티에서 멀티 로그인 구현 시 시큐리티 설정 파일의 우선순위를 두어 사용한 적이 있었다.

또한 필터에도 우선순위를 두어 사용할 수 도 있을 것이다.

 

소스 파일은 깃허브에서 확인 가능합니다.

github.com/ByeongUkChoi/blog-code/tree/main/order-example

반응형