인프런 커뮤니티 질문&답변
LogTrace, AopConfig 순환 참조..
작성
·
504
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
1
김영한
지식공유자
안녕하세요. jhahn님
이러한 설정 클래스는 AOP의 대상이 되지 않도록 설정하시는 것이 좋습니다.
패키지 위치를 적절하게 조정하고 서로의 설정 클래스가 대상이 되지 않도록 조정해주세요.
감사합니다.





