본문 바로가기
programming/프로젝트

[Error] Spring3 에서 bean 생성자 주입 문제

by yhsim98 2022. 8. 21.

KOIN 리뉴얼을 진행하는데 스프링 빈 주입방식이 모두 필드 주입이길래 생성자 주입으로 변경했습니다.

그러고 실행을 시켰더니

 

Common causes of this problem include using a final class or a non-visible class; 
nested exception is java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given

 

이라는 에러가 터졌습니다.

 

찾아보니 spring3 이하에서는 AOP 처리를 할 때 하나 이상의 인터페이스를 구현한 객체가 아니면 jdk dynamic proxy 가 아닌 CGLIB를 사용한다고 하네요.

 

그리고 CGLIB는 기본 생성자를 필요로 합니다. 따라서 기본 생성자를 생성하면 안되는 생성자 주입은 사용할수가 없습니다..

 

당장 스프링 버젼을 올리거나 아키텍쳐를 갈아엎기는 무리가 있으니 어쩔 수 없이 필드 주입을 사용해야 할 듯 싶네요. 혹시 모를 순환참조를 막기 위해 어떤 방법이 있을까 고민해봐야겠습니다.