관리 메뉴

피터의 개발이야기

[Kotlin] Spring MVC, Circular view path 에러 본문

Programming/Kotlin

[Kotlin] Spring MVC, Circular view path 에러

기록하는 백앤드개발자 2024. 8. 4. 16:45
반응형

ㅁ 들어가며

[Kotlin] Spring Boot와 Kotlin으로 QueryDSL 페이징 처리하기을 작성하면서 Circular view path 에러가 발생하여 해결방법을 정리하였다.

 

ㅁ 에러 내용

jakarta.servlet.ServletException: Circular view path [products]: would dispatch back to the current handler URL [/products] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)

ㅇ REST API 컨트롤러에서 뷰 리졸버(View Resolver)가 뷰를 찾으려고 시도할 때 발생한다.

ㅇ Circular view path 에러는 주로 컨트롤러가 반환하는 뷰 이름과 요청 경로가 동일할 때 발생한다. 

ㅇ REST API를 작성할 때는 @RestController를 사용하거나, @ResponseBody를 사용하여 반환 값을 뷰 이름으로 해석하지 않도록 해야 한다.

 

ㅁ 해결방법, RestController 사용

@RestController
@RequestMapping("/products")
class ProductController(private val productService: ProductService) {

    @PostMapping
    fun createProduct(@RequestBody product: Product): Product {
        return productService.saveProduct(product)
    }

ㅇ REST API를 작성할 때는 @Controller 대신 @RestController를 사용해야 한다. 

ㅇ @RestController는 메서드가 반환하는 값을 뷰 이름으로 해석하지 않고, JSON 또는 XML로 변환하여 반환한다.

 

ㅁ 해결방법, @ResponseBody 사용

@Controller
@RequestMapping("/products")
class ProductController(private val productService: ProductService) {

    @PostMapping
    @ResponseBody
    fun createProduct(@RequestBody product: Product): Product {
        return productService.saveProduct(product)
    }

ㅇ @Controller를 사용하면서 특정 메서드만 JSON 또는 XML로 반환하고 싶다면, 해당 메서드에 @ResponseBody를 추가하면 된다.

 

ㅁ 함께 보면 좋은 사이트

Circular View Path Error

How to avoid the "Circular view path" exception with Spring MVC test

 

반응형
Comments