• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

LogTrace, AopConfig 순환 참조..

22.10.06 18:07 작성 조회수 365

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의 대상이 되지 않도록 설정하시는 것이 좋습니다.

패키지 위치를 적절하게 조정하고 서로의 설정 클래스가 대상이 되지 않도록 조정해주세요.

감사합니다.