진짜 이런 실수 하면 내 정체가 뭔가 싶다 ^^....
웹서버 톰캣으로 가동하고 localhost 쳐서 들어가려는데 계속 404에러가 뜨는거다...
web.xml 설정이라던지, 스프링에서 톰캣 등록할 때 톰캣 설치된 위치 제대로 확인하고 해당 위치에 있는 톰캣으로 넣어줬고, 주소는 잘못된 게 당연히 없었는 줄 알았는데..............주소가 잘못됐었다 ㅎ..
에러 원인
25번째 줄의 RequestMapping이 주석해제 되어있는 상태였다.
이 상태에서 localhost:8080/musicchart/song 을 치고 들어가려니까 계속 404가 떴다.
당연하다. 이 프로젝트의 ContextRoot가 musicchart 인데 RequestMapping 으로 또 musicchart를 쳐서 들어올 수 있게끔 해놨기 때문이다.
그럼 왜 RequestMapping을 해놨냐고? 웹서버 없이 spring-test 라이브러리로 Api 호출 테스트 해보려고 HomeControllerTest.java 로 테스트코드를 작성했고, 거기서 HomeController.java로 매핑시켜주려고 적어놓은 부분이 25번째 줄이였다.
왜 저렇게 @RequestMapping으로 들어와야 했냐 하면,
테스트코드에서 spring의 빈 객체 주입을 이용하기 위해 2개의 파일을 참조하는 상태였다.
하지만 두 파일에 전부 url mapping ( /musicchart 로 들어오면 HomeController 로 이어준다던지) 하는 부분이 없었기 때문에 (이건 의도적으로 없앤거임 Controller 단에서 url mapping부분 제어하려고ㅇㅇ) 테스트 코드만으로 Context Root를 알 수 없었고, 그래서 @RequestMapping 으로 url mapping을 해준것이였다.
이래야만 테스트코드를 진짜 Controller로 연결할 수 있음)
해결방법
주석처리하니까 당연히 된다. 사실 이 방법도 왜 계속 안될까 고민하다가 이런건 계속 고민하는 것보다 원래 정석대로 똑같은 짓을 또 하면 거기서 차이가 보인다. 새 프로젝트를 생성해서 톰캣을 가동시켜보니 잘 나오길래 바로 HomeController.java (작동이 안됐던 기존코드) 와의 소스 부분에서 차이가 보여 답을 알아낼 수 있었다.
'Spring 3.0 - 4.3' 카테고리의 다른 글
메이븐 기초 (2) pom 파일 (0) | 2020.08.09 |
---|---|
메이븐 기초 (1) Maven이란 / Maven 설치법 / jar파일 생성하기 (0) | 2020.08.09 |
[에러] MyBatis 이용 시, DTO 객체와 테이블의 컬럼명은 동일해야한다. (0) | 2020.06.21 |
[Spring] Spring의 의존성 주입이란 / 어노테이션이란 (0) | 2020.06.21 |
1탄 - 스프링을 이용해 Rest API 만들어보기 (1) | 2020.06.19 |