Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- proxy pattern
- http
- OOP
- response
- aop
- aspect
- git
- 인터셉터
- 스프링부트
- RestControllerAdvice
- java
- request
- SQL
- MYSQL
- 디자인패턴
- Spring
- 스프링
- 스프링 시큐리티
- 관점지향프로그래밍
- Filter
- 트랜잭션
- network
- spring boot
- Redis
- exception
- mybatis
- 객체지향프로그래밍
- Interceptor
- Spring Security
- 자바
Archives
- Today
- Total
장쫄깃 기술블로그
[Spring Boot] 등록되는 빈의 순서를 정하자 (@DependsOn) 본문
728x90
들어가며
스프링 프레임워크로 개발시 빈을 등록할 때 빈의 의존관계로 인해 빈들이 등록되는 순서를 지정할 필요가 있다.
(예를 들어, C 빈은 A빈과 B빈 등록 후에 등록되어야 한다.)
이 때 사용하는 어노테이션은 @DependsOn 에 대해 알아보려고 한다.
@DependsOn
@DependsOn 은 어떤 빈이 다른 빈보다 먼저 초기화되도록 강제하며, 에러가 발생하더라도 개발자가 원인을 찾을 수 있도록 메시지를 보여준다.
@Component("A")
public class ComponentA {
// ...
}
@Component("B")
public class ComponentB {
// ...
}
@Component("C")
@DependsOn(value={"A", "B"})
public class ComponentC {
// ...
}
혹은 이렇게도 사용 가능하다.
@Component
public class TestComponent {
@Bean("A")
public void beanA() {
// ...
}
@Bean("B")
public void beanB() {
// ...
}
@Bean("C")
@DependsOn(value={"A", "B"})
public void beanC() {
// ...
}
}
정리하며
결과적으로 @DependsOn을 사용하면 의존한다는 사실을 스프링에게 직접 알려줄 수 있어서 문제는 해결된다. 하지만 다른 사람이 코드를 봤을 때 헷갈릴 수도 있다.
또, 여러 곳에서 작성하다 보면 무한루프(?)가 걸릴 수 있다. (A -> B -> C -> A 등)
때문에, @PostConstruct 혹은 @Order를 사용하는 방법도 있다.
상황에 맞는 적절한 방법을 사용하면 될 것 같다.
728x90
'Spring Framework > Spring Boot' 카테고리의 다른 글
[Spring Boot] MyBatis란? (0) | 2022.07.03 |
---|---|
[Spring Boot] Meta Annotation (@Target, @Retention) (0) | 2022.06.26 |
[Spring Boot] 의존성 주입 시 Bean이 여러개라면? (@Primary, @Qualifier) (0) | 2022.06.26 |
[Spring Boot] request, response 한 번만 읽어올 수 있는 제약 해결 (0) | 2022.04.19 |
[Spring Boot] AOP 용어 (2) | 2022.04.15 |