오류/Spring

[빈 생성 에러] Error creating bean with name 'XXX'

빨대도둑 2024. 3. 12. 09:24

해결 방식

Controller 빈 생성 에러가 발생 했다면 servlet-context.xml 같은 servlet을 확인해서

<context:component-scan base-package="패키지명" />에 현재 작업중인 프로젝트의 패키지명

즉 컨트롤러가 포함된 패키지의 위치를 정확하게 기재 해야 한다. 

 

이와 같은 방식으로 해결되지 않는다면 다음과 같은 해결 방식을 따라야 한다. 

 

1. Unsatisfied dependency expressed through field 'XXXService';

만약 servlet-context.xml에서 패키지를 입력하고도 빈 생성 에러가 발생할 수 있다

에러 발생 문구를 읽어보면 뒤에 Service단에서 에러가 발생한다.

Service단에 어노테이션이 없어서 발생한 것이라고 추정할 수 있다. 

@Service 혹은 @Component 같은 어노테이션을 추가한다. 기존 프로젝트가 있다면 다른 서비스단을 참조하면 된다.

 

2. Unsatisfied dependency expressed through field 'XXXServiceImpl';

이전에는 인터페이스인 Service 였는데, 이번엔 인터페이스를 구현하고 있는 ServiceImpl에서 빈 생성의 이유가 나온다.
마찬가지로 ServiceImpl에 가서 @Repository 어노테이션을 추가한다

 

3. 작성한 sql이 담긴 mybatis (xml파일) 확인 해볼 것 (작성한 SQL 오타 혹은 에러) 사실 오타일 가능성이 제일 높다. 

트랙백에서 보니 SQL문을 담고있는 mapper xml에서 쿼리에 오타가 발생했거나 에러가 발생하면 빈 에러가 발생하기도 한다고 한다. 
SQL의 경우 쿼리를 날려보고 오류 여부를 확인한 뒤, 반영한다. 
 

 

참조 글

https://liante0904.tistory.com/113

 

[Spring] 빈 생성 에러 디버그 Error creating bean with name 'XXX'

스프링은 자바에서 MVC 패턴을 이용해 개발을 할 수 있게 도와준다. 또한 자바의 철학에 맞게 확실한 데이터 형과 문법, 그리고 Bean이라는 개념을 통해 객체 지향 프로그래밍을 사용하고.. 이를

liante0904.tistory.com