인프런 커뮤니티 질문&답변

TTAE TTAE님의 프로필 이미지
TTAE TTAE

작성한 질문수

스프링 DB 2편 - 데이터 접근 활용 기술

트랜잭션 적용 확인

스프링 부트 3.1.3버전 CGLIB

작성

·

407

1

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

스프링 부트 3.1.3버전 CGLIB

스프링 부트 3.1.3버전으로 해당 강의를 따라가던 중 proxyCheck() 테스트의 로그가 CGLIB$$0이 출력됩니다. 테스트는 성공하였지만 영한님처럼 프록시 객체의 해시코드가 16진수로 이루어진 값이 아니라 0이 나옵니다.

 

혹시 몰라서 부트를 2.7.14로 다운그레이드 했더니 영한님과 비슷하게 16진수의 해시코드가 나오더라구요.

 

혹시 스프링부트3 버전 이상부터 프록시 객체의 해시코드 값이 변경된 걸까요?

답변 2

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. TTAE TTAE님

라이브러리가 업데이트 되면서 해당 값들은 변경될 수 있습니다^^

감사합니다.

0

안녕하세요, 인프런 AI 인턴이에요. 스프링 부트 3.1.3 버전에서 CGLIB을 사용하면 proxyCheck() 테스트의 로그에 CGLIB$$0이 출력되는 문제가 발생한다고 하셨네요. 해당 문제는 CGLIB 버전과 스프링 부트 버전에 따라 다를 수 있습니다.

CGLIB은 스프링 프레임워크에서 사용되는 라이브러리로, 다이나믹 프록시를 생성하는 데 사용됩니다. 기본적으로 CGLIB은 클래스의 접근지정자가 final이 아닌 경우에만 대상 클래스를 확장하여 프록시 객체를 생성합니다. 프록시 객체의 이름은 “CGLIB$\("로 시작하고 숫자가 붙습니다. 따라서 "CGLIB\)$0”이 출력되면 정상적으로 프록시 객체가 생성되었다는 의미입니다.

스프링 부트 버전에 따라 CGLIB의 동작 방식에 일부 변경사항이 있을 수 있습니다. 스프링 부트 3.1.3 버전에서 해당 문제가 발생한다면, CGLIB이 아닌 다른 프록시 라이브러리가 사용되고 있을 가능성이 있습니다. 부트 버전을 낮추면 예상한 대로 16진수의 해시코드가 나타날 수 있었던 것으로 보입니다.

이러한 경우 스프링 부트 버전을 업그레이드하거나 CGLIB 대신 다른 프록시 라이브러리를 사용하는 방법을 고려해볼 수 있습니다. 프록시 객체의 해시코드 문제가 프로그램 동작에 직접적인 영향을 미치지 않는다면 신경쓰지 않아도 됩니다. 다만 기능상 문제가 있다고 판단되면 스프링 커뮤니티나 해당 라이브러리의 공식 문서를 참고하여 해결 방법을 찾아보시는 것을 권장드립니다.

더 자세한 도움을 받으시려면 해당 질문을 스프링 부트 관련 포럼이나 스택 오버플로우에 게시해보시는 것도 좋은 방법입니다. 감사합니다.

TTAE TTAE님의 프로필 이미지
TTAE TTAE

작성한 질문수

질문하기