[TIL] 23/02/09 java.lang.IllegalStateException: Ambiguous mapping.

hyewon jeong·2023년 2월 9일
0

TIL

목록 보기
87/138

1 발생

공지사항에 키워드 검색 구현 후 생긴 에러이다.


2 코드

Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'noticeController' method 
com.team.final8teamproject.contact.controller.NoticeController#searchByKeyword(String, int, int, Direction, String)
to {GET [/api/managers/notice/check]}: There is already 'noticeController' bean method
com.team.final8teamproject.contact.controller.NoticeController#getNoticeList(int, int, Direction, String) mapped.
	at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry.validateMethodMapping(AbstractHandlerMethodMapping.java:667) ~[spring-webmvc-6.0.4.jar:6.0.4]
	at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry.register(AbstractHandlerMethodMapping.java:633) ~[spring-webmvc-6.0.4.jar:6.0.4]
	at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod(AbstractHandlerMethodMapping.java:331) ~[spring-webmvc-6.0.4.jar:6.0.4]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.registerHandlerMethod(RequestMappingHandlerMapping.java:438) ~[spring-webmvc-6.0.4.jar:6.0.4]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.registerHandlerMethod(RequestMappingHandlerMapping.java:76) ~[spring-webmvc-6.0.4.jar:6.0.4]
	at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lambda$detectHandlerMethods$2(AbstractHandlerMethodMapping.java:298) ~[spring-webmvc-6.0.4.jar:6.0.4]
	at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:721) ~[na:na]
	at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.detectHandlerMethods(AbstractHandlerMethodMapping.java:296) ~[spring-webmvc-6.0.4.jar:6.0.4]
	at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.processCandidateBean(AbstractHandlerMethodMapping.java:265) ~[spring-webmvc-6.0.4.jar:6.0.4]
	at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initHandlerMethods(AbstractHandlerMethodMapping.java:224) ~[spring-webmvc-6.0.4.jar:6.0.4]
	at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.afterPropertiesSet(AbstractHandlerMethodMapping.java:212) ~[spring-webmvc-6.0.4.jar:6.0.4]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.afterPropertiesSet(RequestMappingHandlerMapping.java:225) ~[spring-webmvc-6.0.4.jar:6.0.4]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1797) ~[spring-beans-6.0.4.jar:6.0.4]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1747) ~[spring-beans-6.0.4.jar:6.0.4]
	... 76 common frames omitted

3 원인


찾아보니 스프링에서 이런 에러가 나면 해당 **Controller.java 파일의 Mapping 에 문제가 발생한 것이라고 한다.


4 해결

나의 경우 다음과 같이 같은 이름의 GetMapping 이 두 개 들어가 있었다.

따라서 GetMapping 둘 중 하나의 이름을 바꾸거나, 아래 GetMapping 어노테이션을 다른 어노테이션으로 바꿔주면 문제가 해결된다.

결론: 같은 이름으로 같은 어노테이션을 하면 mapping 문제가 발생한다.

profile
개발자꿈나무

0개의 댓글