스프링은 자바에서 MVC 패턴을 이용해 개발을 할 수 있게 도와준다.
또한 자바의 철학에 맞게 확실한 데이터 형과 문법, 그리고 Bean이라는 개념을 통해 객체 지향 프로그래밍을 사용하고.. 이를 통해 협업을 할 수 있도록 설계를 할 수 있게 해준다.
제목에 적힌 빈 생성 에러의 경우 크게 두세가지 의 이유로 에러가 발생한다.
또한 어떤 것을 빠트렸냐에 따라서 에러가 나는 빈의 종류가 다르다.
에러 메시지에 따라 해결 방법을 사례별로 정리해 두었다.
디버깅을 위해서던 검색하다가 개념 숙지용으로 보았던 간에.. 스프링의 Flow에 관한 이야기 이므로.. 쭉 읽어보고 이해가 안간다던지 검증하여 숙지하길 바란다. (절대로 암기하지말고 이해해야 한다.)
이 Flow을 모른다면 스프링을 안다고 할수 없다.
Error creating bean with name "XXXController"
만약 컨트롤러(Controller) 에서 빈생성 에러가 난다면, 그것은 servlet(서블릿)에서 에러의 원인을 의심해보아야 한다.
스프링의 전체적인 데이터 순환? 을 간단히 적어서 생각해보면
사용자가 어떤 요청을 하면 그것을 가장 먼저 Servlet이 받아서 Controller에 Mapping을 확인 한 뒤, 해당 Mapping의 코드로 전달되고 이후에 Service단을 통해 DAO를 거쳐가는 것이 먼저 학습되어 있어야 한다.
주로 빈 생성 에러는 서버를 새로 시작할 때 에러가 발생 할텐데 서버가 시작하고 / 혹은 index.do 와 같은 메인 페이지에 요청을 보낼 것이다. 이 때 Servlet이 요청을 받고 Controller 에 있는 Mapping을 확인해야 하는데 Controller 자체를 찾을 수 없다면? 코드의 문제가 아니라 이전의 Servlet의 properties.. 즉 설정값 세팅 에서 에러가 발생했을 것이다.
해결 방법(3가지 확인)
고로 Controller 빈 생성 에러가 발생 했다면 servlet-context.xml 같은 servlet을 확인해서
<context:component-scan base-package="패키지명" />에 현재 작업중인 프로젝트의 패키지명.. 즉 컨트롤러가 포함된 패키지의 위치를 정확하게 기재 하시길.. (그냥 컨트롤러에 패키지를 그대로 복사해서 넣으시는 걸 추천)
그리고 @Controller 어노테이션이 없어서 일수도 있다 -> 이건? 당연하다. Controller를 찾아서 URL의 Mapping을 찾아야 하는데.. 컨트롤러 자체를 찾지 못했을테니
"그래도 안되는데??"
1. Unsatisfied dependency expressed through field 'XXXService';
만약 servlet-context.xml에 (이하 servlet)에서 패키지를 입력하고도.. 또 빈 생성 에러가 발생할 수 있다
근데 끝까지 읽어보면 뒤에 Service단에서 에러가 발생한다. 이는.. Service단에 어노테이션이 없어서 일것이다
@Service 혹은 @Component 같은 어노테이션을 추가한다. 기존 프로젝트가 있다면 다른 서비스단을 참조하면 된다.
"그래도 안되는데??"
2. Unsatisfied dependency expressed through field 'XXXServiceImpl';
3. 작성한 sql이 담긴 mybatis (xml파일) 확인 해볼 것 (작성한 SQL 오타 혹은 에러)
http://beagle-dev.tistory.com/122
'디버깅 > Spring mvc (Maven, Mybatis)' 카테고리의 다른 글
스프링 프레임 워크(Spring Framework) - 5. 프로젝트 살펴보기, 뼈대 만들기 등등 (0) | 2017.12.13 |
---|---|
스프링 프레임 워크(Spring Framework) - 4. 프로젝트 생성 및 설명 Hello World (0) | 2017.12.13 |
[Maven] Eclipse + Maven 환경에서 Maven Clean 후 Maven install 실패시.. (0) | 2017.09.01 |
[TIP] Eclipse + 스프링 프레임 워크 세팅 Cookbook (0) | 2017.08.22 |
스프링 프레임 워크(Spring Framework) - 3. 개발 환경(3) (0) | 2017.08.01 |