티스토리 뷰

반응형

우선 이 문제가 발생한것은 Pageable 객체를 사용하는데, WebMvcConfiguration 관련 세팅을 사용자가 직접 세팅할때 관련된 처리가 누락되어 나타나는 문제로 나타났다. 즉, 내가 수동으로 설정한 WebConfig 가 WebAutoConfig 를 대체하면서 문제가 된 케이스...

 

컨트롤러에서 Pageable 처리를 할때, 해당 값은 아래와 같이 별도의 어노테이션이 없이 동작하는데, 이런 선언없이 동작하는 매직(?!)을 실수로 빠지게 구성한것이다. Pageable 관련된 내용은 아래 링크에 설명이 잘된편이니 궁금하면 참고하자.

https://tecoble.techcourse.co.kr/post/2021-08-15-pageable/

@Api(value = "ItemController")
@SwaggerDefinition(tags = {@Tag(name = "ItemController", description = "컨트롤러")})
@RestController
@RequestMapping("items")
@ResponseBody
public class ItemController {
...
  @RequestMapping(method = RequestMethod.GET, value = "/page")
  public Page<Note> pageData(@RequestParam final String option, @RequestParam final String filter,
                             final Pageable pageable) {
...
  }
}
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {

  @Override
  public void addResourceHandlers(final ResourceHandlerRegistry registry) {
    ...
    super.addResourceHandlers(registry);
  }
}

해결방법

그럼 해결방법은 뭘까? 위에 언급했지만 사용자가 WebMvcConfigurationSupport 를 상속받아서 addResourceHandlers 를 오버라이드하면서 충돌난 문제다. 이걸 해결하려면 WebMvcConfigurer 인터페이스의 addResourceHandlers 를 구현하는 방식으로 해결하면 된다. 즉, 다음과 같은 형식으로 대체가능하다.

@Configuration
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer {
...
  @Override
  public void addResourceHandlers(ResourceHandlerRegistry registry) {
    ...
  }
...
}

mvc contoller 의 여러 케이스에 대한 설정케이스는 아래 링크에 잘 설명되어있으니 참고하도록 하자.

http://honeymon.io/tech/2018/03/13/spring-boot-mvc-controller.html

 

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함