스프링 MVC 설정(1) : 스프링 MVC 빈 설정
1. 스프링 MVC 빈 설정
기본 전략 객체를 커스터마이징 해서 사용하기
@Configuration
@ComponentScan
public class WebConfig {
@Bean
public HandlerMapping handlerMapping(){
RequestMappingHandlerMapping handlerMapping = new RequestMappingHandlerMapping();
handlerMapping.setInterceptors();
// 서블릿 필터와 비슷한 역할, 모든 핸들러 매핑에 설정, 빈으로 등록될 수 있음(IoC 컨테이너의 장점을 활용할 수 있음)
handlerMapping.setOrder(Ordered.HIGHEST_PRECEDENCE);
// 여러 개의 핸들러 매핑간의 우선순위를 정할 수 있음
return handlerMapping;
}
@Bean
public HandlerAdapter handlerAdapter(){
RequestMappingHandlerAdapter handlerAdapter = new RequestMappingHandlerAdapter();
//handlerAdapter.setArgumentResolvers();
//handler 메소드에 Argument로 PathVariable이나 RequestParam을 사용해서 바인딩 받을 수 있다.
//setArgumentResolvers()를 통해 추가적인 Argument를 정의할 수 있다.
return handlerAdapter;
}
@Bean
public ViewResolver viewResolver(){
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}
@Controller
public class HelloController {
@Autowired
HelloService helloService;
// hello/1?name=spring&age=20
@GetMapping("/hello/{id}")
@ResponseBody
//public String hello(@PathVariable int id, @RequestParam String user){
//public String hello(@PathVariable int id, @ModelAttribute User user){
public String hello(@RequestBody String body) {
// 요청 본문에 들어오는 값을 바인딩 받고 싶을 때
return "Hello, " + helloService.getName();
}
@GetMapping("/sample")
public void sample(){
//return "/WEB-INF/sample.jsp";
//return "sample";
}
}
@RequestBody나 @ResponseBody가 쓰일 때는(json, xml 파싱 등) MessageConverter가 사용된다. 따라서 MessageConverter 기능을 사용하고 싶다면 빈으로 등록해야 한다.
기본 전략 이외에 커스텀한 기능을 추가하고 싶으면 빈으로 등록해야 한다.
참고
- 인프런 : 스프링 웹 MVC(백기선)
Author And Source
이 문제에 관하여(스프링 MVC 설정(1) : 스프링 MVC 빈 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jsj3282/스프링-MVC-설정1-스프링-MVC-빈-설정저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)