• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

의존관계 주입 가능 질문

22.03.13 18:05 작성 조회수 210

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
안녕하세요
이번강의에서 CGLIB 는 구체클래스를 상속하여 프록시 객체를 생성하기 때문에 구체클래스로의 의존관계 주입이 가능하다고 말씀해주셨는데요,
 
이것이 CGLIB 의 장점(?) 인 것처럼 말씀해주셨는데 왜? 인지 궁금합니다.
 
1. 객체지향 프로그래밍에서는 객체 간 의존에서 인터페이스를 기반으로 의존할텐데 예시처럼 구체클래스를 사용하는 경우가 있어서 일까요?
 
2. 인터페이스를 기반으로 프록시 객체를 DI 받은 뒤에 구체 클래스(MemberServiceImpl) 로 캐스팅 하여 사용하는 경우가 있어서 일까요?
 
 
AOP 를 처음 공부하다 보니 궁금한게 많네요 ^_ㅠ
답변 미리 감사드립니다.

답변 1

답변을 작성해보세요.

2

MangKyu님의 프로필

MangKyu

2022.03.15

제 생각에는 크게 2가지 이유가 있을 것 같네요!

우선 첫번째로는 적어주신대로 JDK 동적 프록시 같은 경우에는 인터페이스를 반드시 필요로하기 때문입니다. 실제 개발을 하다보면 인터페이스 없이 구체 클래스에 의존하는 경우도 많은데, CGLib 덕분에 AOP를 적용하기 위한 모든 빈들에게 인터페이스를 만들어주지 않아도 되기 때문입니다.

그리고 두번째로는 JDK 프록시를 적용한다면 인터페이스 주입만 가능한 반면에 CGLib을 적용하면 인터페이스 주입과 구체 클래스 주입이 모두 가능하기 때문입니다. 그러므로 구현체(구체 클래스)에 의존해야 하는 경우가 있다면 유연하게 대처할 수 있습니다. 만약 JDK 프록시가 적용되었을 때 구체 클래스를 주입받으려고 하면 빈을 찾을 수 없어서 에러가 발생하기 때문입니다.

 

혹시 잘못된 내용이나 부족한 설명 있으면 영한님께서 교정해주시면 좋을 것 같네요!
감사합니다:)

고맙습니다^^!