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로 바꿔주는것이 맞다)
그리고 실행해보면
정상적으로 잘 출력된것을 확인할 수 있다.
'Java > Error' 카테고리의 다른 글
The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 에러 (0) | 2021.07.31 |
---|---|
NoUniqueBeanDefinitionException 에러 (0) | 2021.06.22 |