-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
LogTrace, AopConfig 순환 참조..
22.10.06 18:07 작성 조회수 374
0
안녕하세요. 제가 아래 코드 처럼 개인 프로젝트에 로그를 추가해보고 싶어 빈으로 등록 했습니다.
@Configuration
public class LogConfig {
@Bean
public LogTrace logTrace() {
return new ThreadLocalLogTrace();
}
}
@Slf4j
@Aspect//ㅇㅓ드바이저로 변환하여 저장(어드바이저 빌더)
public class LogTraceAspect {
//어드바이스 로직
private final LogTrace logTrace;
public LogTraceAspect(LogTrace logTrace) {
this.logTrace = logTrace;
}
}
@Configuration
public class AopConfig {
@Bean
public LogTraceAspect logTraceAspect(LogTrace logTrace) {
return new LogTraceAspect(logTrace);
}
}
┌─────┐
| logTraceAspect defined in class path resource [co/kr/***/cofig/aop/AopConfig.class]
↑ ↓
| logTrace defined in class path resource [co/kr/****/cofig/log/LogConfig.class]
└─────┘
이렇게 순환 참조 에러가 나더라구요..log와 aop에서 서로 참조하고 있는데 어떻게 설계를 해야 할지 감이 잘 안옵니다.
빈을 아래와 같이 한 곳에 모아두면 잘 동작 하지만 왜 동작 하는지 이해가 안되며 이렇게 해도 되는지 모르겠습니다.
@Configuration
public class AopConfig {
@Bean
public LogTraceAspect logTraceAspect(LogTrace logTrace) {
return new LogTraceAspect(logTrace);
}
@Bean
public LogTrace logTrace() {
return new ThreadLocalLogTrace();
}
}
혹시 더 좋은 방법이 있을까요??
감사합니다.
답변을 작성해보세요.
1
김영한
지식공유자2022.10.10
안녕하세요. jhahn님
이러한 설정 클래스는 AOP의 대상이 되지 않도록 설정하시는 것이 좋습니다.
패키지 위치를 적절하게 조정하고 서로의 설정 클래스가 대상이 되지 않도록 조정해주세요.
감사합니다.
답변 1