RestController

随着移动互联网的发展,RESTful 作为一种对移动端友好的技术也日趋火热,Spring 也提供了 RestController API 方便开发者使用。

创建一下新的类,取名为 PersonController:

  1. @RestController
  2. @RequestMapping("/person")
  3. public class PersonController {
  4. @RequestMapping(method = RequestMethod.GET)
  5. public List<Person> getAllPerson() {
  6. List<Person> l = new ArrayList<>();
  7. l.add(new Person(1, "Chester"));
  8. return l;
  9. }
  10. @RequestMapping(value = "/{id:[\\d]+}", method = RequestMethod.GET)
  11. public Person getPerson(
  12. @PathVariable(value = "id") int id
  13. )
  14. {
  15. return new Person(id, "Chester");
  16. }
  17. }

这里一个简单的 RestController 示例。可以看到我们用到 @RestController 这个 Annotation,如果我们点开它看,会发现它不过是很简单的一个组合:

  1. @Target(ElementType.TYPE)
  2. @Retention(RetentionPolicy.RUNTIME)
  3. @Documented
  4. @Controller
  5. @ResponseBody
  6. public @interface RestController {
  7. }

@RestController 实际上就是在 @Controller 的基础上,给所有的函数返回值增加了 @ResponseBody。因此我们在函数里不需要再指明 @ResponseBody,可以直接将 Java 对象(如 Person)返回,简化了代码的编写。

Spring 本身是不带 JSON 功能的,不过它提供了对于第三方 JSON 库的良好支持。我们通过 Maven 引入一个很常用的 JSON 库 Jackson。在 pom.xml 中的依赖部分加入下面的内容:

  1. <dependency>
  2. <groupId>com.fasterxml.jackson.core</groupId>
  3. <artifactId>jackson-databind</artifactId>
  4. <version>2.7.3</version>
  5. </dependency>

另外我们还需要修改我们的配置,加入 @EnableWebMvc

  1. @Configuration
  2. @EnableWebMvc
  3. @ComponentScan("com.skyline")
  4. public class AppConfig {
  5. }

@EnableWebMvc 是 Spring MVC 新版本所推荐的用法,它会帮我们做很多配置工作。@EnableWebMvc 具体做的事情可以参考 Spring 官方文档。这里我们需要知道的是,@EnableWebMvc 会帮我们配置好 JSON 有关的响应 Handler。如果没有,是不能返回 JSON 响应的。

编译代码之后,将生成的代码拷贝到 Tomcat 的工作目录,同时不要忘记将 Jackson 的 jar 包也拷贝到 lib 目录下面,这样在运行时 Tomcat 才能找到正确的依赖。运行 Tomcat 在浏览器中可以看到输出:

rest-result