Java/Error

Invalid property ' ' of bean class 에러

담크 2021. 6. 21. 05:11

spring에서 DI 유형 중 setter 유형으로 setter를 만들고 객체를 생성할 때 값을 잘못주입해서 에러가 발생했다.

애초에 만들때부터 어디에 에러가 났는지 보인다.
위를 실행했을 때 발생한 에러

 

Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'myclass' of bean class [com.test01.BeanTest]: Bean property 'myclass' is not writable or has an invalid setter method. Did you mean 'myClass'?
at org.springframework.beans.BeanWrapperImpl.createNotWritablePropertyException(BeanWrapperImpl.java:243)
at org.springframework.beans.AbstractNestablePropertyAccessor.processLocalProperty(AbstractNestablePropertyAccessor.java:432)
at org.springframework.beans.AbstractNestablePropertyAccessor.setPropertyValue(AbstractNestablePropertyAccessor.java:278)
at org.springframework.beans.AbstractNestablePropertyAccessor.setPropertyValue(AbstractNestablePropertyAccessor.java:266)
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:104)
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:79)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1722)
... 13 more

어떠한 에러인지 뜻을 풀어보면 빈 클래스의 'myclass'속성이 잘못되었다고 나와있다

그리고 해당 에러는 그 뒤에 myclass가 아닌 myClass를 뜻하는건 아니니? 하고 친절하게 물어봐준다.

 

위의 사진을 보면 알겠지만 setter에서는 setMyClass 라고 C를 대문자로 적어놨지만 

applicationContext에서 <property name>속성에선 myclass라고 c를 소문자로 적어놨기 때문에 에러가 발생했다.

 

이 경우 myclass 를 myClass로 변경하거나 setter에서 MyClass를 Myclass로 변경하면된다.

(그렇지만 setter의 경우 주로 앞에만 대문자로 사용하기때문에 여기서는 setMyclass로 바꿔주는것이 맞다)

 

그리고 실행해보면

정상적으로 잘 출력된것을 확인할 수 있다.