
자기 자신 주입
- 자기 자신을 의존관계 주입 받는 것
- 스프링 부트 2.6부터는 순환 참조를 기본적으로 금지하도록 정책이 변경 되어 아래와 같은 옵션을 추가해 줘야 한다
- application.properties
- spring.main.allow-circular-references=true
- 생성자 주입시 오류가 발생한다. 본인을 생성하면서 주입해야 하기 때문에 순환 사이클이 만들어진다. 반면에 수정자 주입은 스프링이 생성된 이후에 주입할 수 있기 때문에 오류가 발생하지 않는다.
예)
@Slf4j
@Component
public class CallServiceV1 {
private CallServiceV1 callServiceV1;
@Autowired
public void setCallServiceV1(CallServiceV1 callServiceV1) {
this.callServiceV1 = callServiceV1;
}
public void external() {
log.info("call external");
callServiceV1.internal();
}
public void internal() {
log.info("call internal");
}
}

- 결과
