728x90
오류 내용
팀 프로젝트 중 머지 후 풀을 받고 아래와 같은 오류를 맞닥뜨렸다.
caused by: org.springframework.beans.factory.beancreationexception at abstractautowirecapablebeanfactory.java:1786
오류 이유
팀원들이 타임리프가 잘 적용이 됐는지 확인하기 위해 컨트롤러에 코드를 작성해두었는데,
찾아보니 서로 다른 메소드에서 동일한 Mapping 처리를 한 것이 원인이라고 한다.
스프링은 매핑을 처리할 때 경로와 HTTP 메서드를 기반으로 매핑을 식별하는데,
동일한 경로에 여러 개의 메서드가 매핑되면 충돌이 발생하게 된다.
👉 매핑을 고유하게 만들어야 함
오류가 발생한 코드
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class MemberController {
@GetMapping("/hello")
public String hello() {
return "main/GoalMain.html";
}
}
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class MypageController {
@GetMapping("/hello")
public String hello(){
return "member/myPage.html";
}
}
위 코드에서 보듯이 서로 다른 두 메서드가 둘 다 /hello로 매핑되어 있는 것을 볼 수 있다.
해결 방법
따라서 아래처럼 다른 경로 설정을 하면 된다.
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class MemberController {
@GetMapping("/hello")
public String hello() {
return "main/GoalMain.html";
}
}
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class MypageController {
@GetMapping("/my")
public String hello(){
return "member/myPage.html";
}
}
기존에 작성한 메소드 두 개는 서로 다른 클래스에 작성이 되어 있기 때문에 경로만 바꿔주면 되지만,
같은 클래스에 같은 경로로 작성되어 있는 메소드라면
경로뿐만 아니라 어노테이션(@GET/@POST/@DELETE/@PUT)도 확인을 해주어야 한다.
참고
https://2minmin2.tistory.com/76
'Trouble Shooting' 카테고리의 다른 글
[SpringBoot & Postman] HTTP method names must be tokens 오류 해결 (0) | 2024.06.25 |
---|---|
[NCP] Server 생성 시 잘못된 IP입니다. 해결 방법 (1) | 2024.05.28 |
[SpringBoot] SpringBoot 3 버전 Querydsl build.gradle 설정 오류 및 해결 (0) | 2024.05.07 |
[JSONObject] Date 타입 처리 방법 (0) | 2024.03.22 |
🛠 물고기 방향키 이동 예제 🛠 .style vs .getComputedStyle(), parseInt() vs Number() (4) | 2024.03.07 |