에러 모음

NotWritablePropertyException, BeanCreationException

junani0v0 2024. 4. 25. 15:14

< 에러 메시지 >

4월 25, 2024 2:57:02 오후 org.apache.catalina.core.StandardContext listenerStart

SEVERE: Context initialized 이벤트를 [org.springframework.web.context.ContextLoaderListener] 클래스의 인스턴스인 리스너에 전송하는 동안 예외 발생

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'joinService' defined in file [C:\dev\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\04_springJdbc_Self\WEB-INF\classes\context-root.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'memberDao' of bean class [com.portfolio.www.service.JoinService]: Bean property 'memberDao' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?

NotWritablePropertyException

빈 속성 'memberDao'는 쓰기 가능하지 않거나 유효한 setter 메서드가 없어 발생

  • setter 메서드의 매개변수 타입이 getter의 반환 타입과 일치 확인
  • setter 메서드가 존재하지 않거나, 혹은 적절한 타입이 아니어서 발생

BeanCreationException

빈을 생성시 문제가 발생으로 나오는 예외

  • 의존성 주입 문제: 빈이 다른 빈을 의존하고 있지만 해당 의존성을 해결할 수 없을 때 발생. 이는 주로 적절한 빈을 찾지 못하거나, 빈의 생성자나 setter 메서드에 문제가 있는 경우 발생
  • 빈 생성 과정 중 발생하는 예외: 빈을 생성하는 동안 발생한 예외가 BeanCreationException으로 전파될 수 있음. 예를 들어, 빈의 생성자나 초기화 메서드에서 예외가 발생
  • 빈의 설정 오류: 빈의 설정이 잘못되어 빈을 생성할 수 없는 경우에 발생. 이는 잘못된 XML 설정 파일이나 JavaConfig 설정 클래스 등으로 인해 발생

 

< 원인 >

public class JoinService {

    private MemberDao memberDao;
    public void setJoinDao(MemberDao memberDao) {
        System.out.println("--------------" + memberDao +"  in joinService");
        this.memberDao = memberDao;
    }

JoinService에서 setter이름이 일치하지 않아 발생

< 해결 >

public class JoinService {

    private MemberDao memberDao;
    public void setMemberDao(MemberDao memberDao) {
        System.out.println("--------------" + memberDao +"  in joinService");
        this.memberDao = memberDao;
    }

setter이름 context-root.xml에 선언에 맞추어 변경