• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

인터페이스가 있는 경우 인터페이스 타입으로 주입하는 추가 질문입니다.

20.12.30 01:32 작성 조회수 148

0

AOP가 뭔지 이해하는 과정에서 그렇구나 하고 넘어가다 갑자기 인터페이스가 있는 경우 왜 인터페이스 타입으로 주입해야하는거지 하고 질문 게시판을 봤는데 역시나 같은 궁금증을 가진 분이 있어서 답변을 보았습니다.

먼저 클래스가 final이나 생성자가 private일 때는 이해가 갔는데 유튜브로 보여주신 건 보고 좀 생각을 오랫동안 해봤습니다. 스프링 트랜젝션과 AOP 등등 구글링을 많이 해보면서 이해를 해보았는데요

spring.aop.proxy-target-class를 false로 인터페이스 기반으로 프로퍼티를 설정해준다음 인터페이스에서@Transactional 을 메소드에 붙이면 인터페이스 기반으로 프록시 객체가 만들어지고 메소드가 호출될 때 프록시 객체가 그 메세지를 대신 받아 트랜젝션을 실행시키고 메소드를 실행하는데 @Autowired를 클래스로 주입하면 자기 자신의 메서드를 호출하면서 인터페이스 기반으로 트랜잭션 프록시 객체가 만들어졌기 때문에 프록시 객체를 거치지 않게 되고 그래서 에러가 나는걸로 이해했습니다. 이게 맞게 이해한건가요? 아니면 어느 부분을 더 봐야하는지 알려주시면 감사하겠습니다.

답변 1

답변을 작성해보세요.

1

유튜브에 관련한 내용을 영상으로 올려두었으니 참고해 주시기 바랍니다.

문제

해설

감사합니다.