05AM
Error : 순환 참조 → facade 패턴 본문
에러
The dependencies of some of the beans in the application context form a cycle
순환참조 문제란 A 클래스가 B 클래스의 Bean 을 주입받고, B 클래스가 A 클래스의 Bean 을 주입받는 상황처럼 서로 순환되어 참조할 경우 발생하는 문제이다.
참조에 사이클이 발생하여 주입 받을 수 없을 때 발생한다.
방법 1
순환 참조가 일어나는 로직을 찾아 수정한다.
ex) 클래스의 분리
방법 2
소프트웨어 디자인 패턴 중 하나인 Facade 패턴을 프로젝트에 적용한다.
Facade pattern이란?
서브 시스템들을 더 쉽게 사용할 수 있도록 간단한 인터페이스를 제공하는 구조를 갖추는 패턴
주로 복잡한 시스템의 내부를 단순화하여 외부에 노출되는 API를 단순화하고, 시스템과 클라이언트 간의 결합도를 낮추는데 사용된다.
Springboot에서 Facade 패턴 구현 방법
- 서브 시스템 Facade 패턴을 적용하려는 복잡한 시스템 내의 다양한 서브 시스템을 구현한다. 예를 들어, 데이터베이스 접근, 비즈니스 로직, 외부 API 호출 등의 작업을 수행하는 여러 서브시스템이 있을 수 있다.
- ex) service, provider, repository 등
- Facade 클래스 Facade 클래스는 클라이언트와 서브 시스템 간의 중간 인터페이스 역할을 한다. 클라이언트는 복잡한 시스템 내의 다양한 서브 시스템을 직접 사용하는 대신 Facade 클래스의 단순화된 인터페이스를 호출한다.
- Facade 클래스 구현 Facade 클래스는 서브 시스템에 대한 인스턴스를 생성하고, 클라이언트가 사용하기 쉬운 단순화된 인터페이스를 제공합니다. 이 클래스는 클라이언트 요청에 따라 해당 서브시스템의 메서드를 호출하고 결과를 반환합니다.
요약
Entity마다 service, provider 등의 서브 시스템을 구현하고, 각 Domain마다 통일된 Facade 클래스를 만들어 서브 시스템의 인스턴스를 생성하고 로직을 구현한다.
'Error Traceback' 카테고리의 다른 글
Error : java.lang.NoClassDefFoundError - Dependency 충돌 / build cache 충돌 (0) | 2023.07.21 |
---|---|
Error : Github action으로 CI/CD 중 permission denied (0) | 2023.07.21 |
Comments