두 손끝의 창조자

분명 같은 클래스인데 isAssignableFrom 에서 false가 반환된다. 본문

Spring

분명 같은 클래스인데 isAssignableFrom 에서 false가 반환된다.

codinglog 2023. 11. 24. 16:21

스프링부트로 프로젝트 수행 도중 타입 체크 (isAssignableFrom) 부분에서 문제가 발생했다.

특정 클래스의 오브젝트를 인자로 리플렉션으로 메소드를 실행하려고 하는데 메소드의 파라미터 타입과 클래스의 오브젝트 타입이 달라서 실행이 안되는 문제가 발생했다.

디버깅 해본 결과 분명 타입은 같은 타입이었다. 허나 다른 부분은 클래스로더였다.

하나는 RestartClassLoader 다른 하나는 AppclassLoader 였다.

클래스 로더가 다르면 둘의 타입은 다르다고 인식할 수 있기 때문에 가장 의심스러운 부분이었다.

RestartClassLoader는 스프링부트의 spring-boot-devtools 를 사용하면 추가되는 클래스로더이다.

spring-boot-devtools를 제거하고 나니 잘 수행되었다.

프로퍼티를 추가하여 해결하는 방법도 있는듯 했지만 앞으로 계속 문제가 될것 같아서 바로 삭제했다.

반응형
Comments