java + spring 사용시 default constructor 를 두는 이유.

2015-10-14 23:36

bean 생성을 위해...가 맞나요?

default constructor 를 두지 않고 argument 가 있는 constructor 를 사용하게 되면 bean 생성시 default constructor 가 없기 때문에 생성을 못하여 에러가 발생... 이를 막기 위해서 default constructor 를 사용하는 것이 맞는지요?

만약 해당 class 의 property 에 대해 초기값이 반드시 필요하다거나 하여서, 의도적으로 default constructor 를 두지 않는다면 argument가 있는 constructor 를 두되 constructor-arg 를 활용하는 건가요?

오랜만에 spring 으로 현업을 하려니, 왜 라는 질문이 끊임없이 나오네요 ^^;;

2개의 의견 from SLiPP

2015-10-15 18:51

http://stackoverflow.com/questions/7492652/does-spring-require-all-beans-to-have-a-default-constructor 문서 참고해 봐라.

spring bean을 사용하기 위해 반드시 default constructor를 둘 필요는 없는 것으로 알고 있다. 단, default constructor를 두지 않으려면 위 링크 글과 같이 constructor injection을 통해 bean을 생성할 수 있도록 설정해야 한다.

만약 constructor injection을 통해 bean을 생성하는 부분이 없다면 default constructor가 있어야 spring bean을 생성할 수 있겠지.

constructor injection 설정해서 테스트함 해봐라.

2015-10-15 20:36

@자바지기 아하!! test하니 바로 nested exception is org.springframework.beans.BeanInstantiationException: ... 에러가 뜨네여 ^^;; 친절하게도 No default constructor found; nested exception 이런 문구가... 그렇다면 모든 bean 대상 클래스들은 default constructor 를 두는게 좋겠네요. 말씀처럼 반드시 둘 필요는 없지만... 괜히 일부러 관리포인트만 늘리게 되는 것 같습니다. 정 의도적으로 default constructor 를 두어야겠다면 constructor injection 을 통해 해결할 수 있겠네요. 답변 감사합니다~!

의견 추가하기