2013-05-24 7 views
0

나는 이것이 이전에 제기되어 왔으며 이것이 멍청한 질문이라는 것을 알고있다. 그러나이 문제를 해결할 수있는 방법을 모를 수는 없다. 내 앱을 시작할 때 해결할 수없는 순환 참조 오류가 발생했습니다. 아래 구조. 무엇이 잘못되었으며 어떻게 고칠 수 있습니까?봄철 해결할 수없는 순환 참조

@Controller("AAA") 
public class AAAImpl implements AAA { 

    private final BBB BBB; //this is constructor injected 

} 

@Service 
public class BBBImpl implements BBB { 

    @Autowired 
    CCC CCC; 

} 

@Service ("CCC") 
public class CCCImpl extends AbstractQueryService<FinalSeminar, Long> implements CCC { 

    @Resource 
    AAA AAA; 

} 
+1

CCCImpl이 컨트롤러 클래스에 의존하는 이유는 무엇입니까? 일반적으로 컨트롤러는 종속성 체인의 맨 아래에 있습니다. 웹 API 만 호출하고 코드는 절대 호출하지 않습니다. – gerrytan

답변

1

1) 컨트롤러를 다른 구성 요소에 삽입 할 필요가 없습니다. HTTP 요청을 처리하는 데에만 사용해야합니다. 비즈니스 로직을 포함시키지 마십시오. 서비스 또는 관리자 계층에서 작성할 수 있습니다.

2) 순환 참조에 대한 예외가 발생하는 이유는 클래스 AAAImpl이 BBBImpl에 대한 종속성을 iclludes한다는 것이므로 궁극적으로 다시 AAA에 의존하는 CCCImpl에 의존합니다. 따라서 봄은 이러한 콩을 만들 수 없습니다.