Spring MVC helps to build REST API server with minimum code.
The crucial files are as follows.
- pom.xml (with dependency to spring framework and jackson 2)
- Spring context xml
- REST DAO class
- REST Controller class
pom.xml
- Dependency to Spring framework and jackson2 is required
spring context xml (servlet-context.xml)
- Above context don’t have any view resolver. I’m explaining it later.
REST DAO class
package com.test.restapi; public class RestResult { public String value1; public int value2; public boolean value3; }
REST Contoller class
package com.test.restapi; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.<span id="mce_SELREST_start" style="overflow:hidden;line-height:0;"></span>http.HttpServletRequest; @RestController public class TestRestController { @RequestMapping("/test_api") public RestResult test01(HttpServletRequest request) { RestResult restResult = new RestResult(); restResult.value1 = "String value"; restResult.value2 = 100; restResult.value3 = true; return restResult; } }
The result
{"value1":"String value","value2":100,"value3":true}
How it works
- Controller class is using @RestController ,which is from Spring 4. (@RestController = @Controller + @ResponseBody)
- @ResponseBody is handled by RequestResponseBodyMethodProcessor inside HandlerAdapter (org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor)
- Refer to the following post to understand the role of HandlerAdapter
- RequestResponseBodyMethodProcessor converts response object (RestResult) to String and return to the client
- In converting, if response object is not String, default Jackson converter is used (when Jackson 2 is on the classpath)
- With RequestResponseBodyMethodProcessor, no additional View is needed. (That’s why no view resolver is declared)