스프링의 @Order 어노테이션은 컴포넌트나 빈의 로드 순서를 정의할 수 있다.
같은 타입의 빈이 Autowired 될 때 그 순서를 @Order를 이용하여 정의하는 것이다.
예시 코드는 아래와 같다.
오른쪽 테스트 코드를 보면 List<Rideable> 타입을 Autowired 할 때 @Order에 정의된 순서대로 불러오게 된다.
@Order를 자세히 보게 되면 값에는 정수형이 들어가고 기본 값은 Ordered.LOWEST_PRECEDENCE이다.
Ordered.LOWEST_PRECEDENCE를 보게 되면 아래와 같고 정수의 최댓값을 나타내며 가장 낮은 우선순위를 뜻한다.
가장 우선순위를 높게 하기 위해선 정수형의 최댓값인 Ordered.HIGHEST_PRECEDENCE를 이용하면 된다.
@Order의 값이 중복될 경우 동일 패키지에 존재 시 클래스명 오름차순으로 주입되고,
다른 패키지일 경우 패키지명 오름차순으로 주입되는 것을 확인하였다.
@Configuration 빈에 사용하여 설정의 우선순위를 두어 사용하는 것도 가능하다.
스프링 시큐리티에서 멀티 로그인 구현 시 시큐리티 설정 파일의 우선순위를 두어 사용한 적이 있었다.
또한 필터에도 우선순위를 두어 사용할 수 도 있을 것이다.
소스 파일은 깃허브에서 확인 가능합니다.
반응형
'공부 > Spring' 카테고리의 다른 글
JPA data.sql로 초기화 시 에러 해결방법 Error creating bean with name 'dataSourceScriptDatabaseInitializer' (1) | 2021.08.29 |
---|---|
jackson으로 응답 값 직렬화할 때 속성값의 첫 단어가 한 글자인 경우 (0) | 2021.06.28 |
Spring @Profile 로 환경에 따라 다르게 설정하기 (+ @ActiveProfiles 로 테스트 하기) (0) | 2021.01.08 |
Spring boot test 경로가 다른 패키지 테스트 시 오류 (6) | 2021.01.07 |
Spring Data Rest 알아보기 (0) | 2020.11.20 |