diff --git a/samples/foo/pom.xml b/samples/foo/pom.xml
index 3bd8bde..d23ba91 100644
--- a/samples/foo/pom.xml
+++ b/samples/foo/pom.xml
@@ -26,6 +26,11 @@
 
     <dependency>
       <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-starter-json</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-thymeleaf</artifactId>
     </dependency>
 
diff --git a/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/controller/FooController.java b/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/controller/FooController.java
index c69a8aa..56e64f7 100644
--- a/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/controller/FooController.java
+++ b/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/controller/FooController.java
@@ -1,9 +1,10 @@
 package com.supwisdom.leaveschool.foo.controller;
 
 import com.supwisdom.infras.lang.random.RandomGenerator;
-import com.supwisdom.leaveschool.foo.model.BarException;
+import com.supwisdom.leaveschool.foo.dto.FooPostCommand;
+import com.supwisdom.leaveschool.foo.exception.BarException;
 import com.supwisdom.leaveschool.foo.model.Foo;
-import com.supwisdom.leaveschool.foo.model.FooException;
+import com.supwisdom.leaveschool.foo.exception.FooException;
 import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -40,7 +41,7 @@
    * @return
    */
   @PostMapping(path = "/model")
-  public String model(@Valid @ModelAttribute Foo foo) {
+  public String model(@Valid @ModelAttribute FooPostCommand foo) {
     return "foo/model";
   }
 
diff --git a/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/controller/FooRestController.java b/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/controller/FooRestController.java
index b5b8911..c1e3732 100644
--- a/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/controller/FooRestController.java
+++ b/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/controller/FooRestController.java
@@ -1,9 +1,14 @@
 package com.supwisdom.leaveschool.foo.controller;
 
 import com.supwisdom.infras.lang.random.RandomGenerator;
-import com.supwisdom.leaveschool.foo.model.BarException;
-import com.supwisdom.leaveschool.foo.model.Foo;
-import com.supwisdom.leaveschool.foo.model.FooException;
+import com.supwisdom.infras.objectmapper.ObjectMapper;
+import com.supwisdom.leaveschool.foo.dto.FooDto;
+import com.supwisdom.leaveschool.foo.dto.FooPostCommand;
+import com.supwisdom.leaveschool.foo.dto.Page;
+import com.supwisdom.leaveschool.foo.exception.BarException;
+import com.supwisdom.leaveschool.foo.exception.FooException;
+import com.supwisdom.leaveschool.foo.repo.FooRepository;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.util.MimeTypeUtils;
 import org.springframework.web.bind.annotation.*;
@@ -13,13 +18,18 @@
 import java.util.HashMap;
 import java.util.Map;
 
-/**
- * curl -H 'Accept:application/json' 'http://localhost:8080/foo-rest/greeting/abc'
- */
+import static java.util.stream.Collectors.toList;
+
 @RestController
 @RequestMapping("/foo-rest")
 public class FooRestController {
 
+  @Autowired
+  private FooRepository fooRepository;
+
+  @Autowired
+  private ObjectMapper objectMapper;
+
   /**
    * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:8080/foo-rest/greeting/abc'
    *
@@ -35,28 +45,29 @@
 
   /**
    * good请求：
-   * curl -i -s -X POST -H 'Accept=application/json' 'http://localhost:8080/foo-rest/model?name=abc&age=1'
-   *
+   * curl -i -s -X POST -H 'Accept:application/json' 'http://localhost:8080/foo-rest/model?name=abc&age=1'
    * bad请求：
-   * curl -i -s -X POST -H 'Accept=application/json' 'http://localhost:8080/foo-rest/model?name=abc&age=-1'
+   * curl -i -s -X POST -H 'Accept:application/json' 'http://localhost:8080/foo-rest/model?name=abc&age=-1'
    *
    * @param foo
    * @return
    */
   @PostMapping(path = "/model", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  public Foo model(@Valid Foo foo) {
+  public FooPostCommand model(@Valid FooPostCommand foo) {
     return foo;
   }
 
   /**
-   * curl -i -s -X GET -H 'Accept=application/json' 'http://localhost:8080/foo-rest/foo-exception?with-message=1'
-   * curl -i -s -X GET -H 'Accept=application/json' 'http://localhost:8080/foo-rest/foo-exception?with-message=0'
+   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:8080/foo-rest/foo-exception?with-message=1'
+   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:8080/foo-rest/foo-exception?with-message=0'
    *
    * @return
    * @throws FooException
    */
   @GetMapping(path = "/foo-exception", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-  public Map<String, Object> exception1(@RequestParam(value = "with-message", required = false, defaultValue = "false") boolean withMessage) throws FooException {
+  public Map<String, Object> exception1(
+      @RequestParam(value = "with-message", required = false, defaultValue = "false") boolean withMessage)
+      throws FooException {
     if (withMessage) {
       throw new FooException(RandomGenerator.randomStringAlphabetic(10));
     } else {
@@ -66,7 +77,7 @@
   }
 
   /**
-   * curl -i -s -X GET -H 'Accept=application/json' 'http://localhost:8080/foo-rest/bar-exception'
+   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:8080/foo-rest/bar-exception'
    *
    * @return
    */
@@ -79,4 +90,17 @@
     }
   }
 
+  /**
+   * curl -i -s -X GET -H 'Accept:application/json' 'http://localhost:8080/foo-rest/all'
+   *
+   * @return
+   */
+  @GetMapping(path = "/all", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+  public Page getAll() throws FooException {
+    return new Page(fooRepository.getAll()
+        .stream()
+        .map(f -> objectMapper.map(f, FooDto.class))
+        .collect(toList())
+    );
+  }
 }
diff --git a/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/dto/Dto.java b/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/dto/Dto.java
new file mode 100644
index 0000000..bc8ca75
--- /dev/null
+++ b/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/dto/Dto.java
@@ -0,0 +1,6 @@
+package com.supwisdom.leaveschool.foo.dto;
+
+import java.io.Serializable;
+
+public interface Dto extends Serializable {
+}
diff --git a/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/dto/FooDto.java b/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/dto/FooDto.java
new file mode 100644
index 0000000..7bdadb6
--- /dev/null
+++ b/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/dto/FooDto.java
@@ -0,0 +1,23 @@
+package com.supwisdom.leaveschool.foo.dto;
+
+public class FooDto implements Dto {
+
+  private String name;
+  private int age;
+
+  public String getName() {
+    return name;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  public int getAge() {
+    return age;
+  }
+
+  public void setAge(int age) {
+    this.age = age;
+  }
+}
diff --git a/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/dto/FooPostCommand.java b/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/dto/FooPostCommand.java
new file mode 100644
index 0000000..cbef7b4
--- /dev/null
+++ b/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/dto/FooPostCommand.java
@@ -0,0 +1,31 @@
+package com.supwisdom.leaveschool.foo.dto;
+
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+public class FooPostCommand implements Dto {
+
+  @NotNull
+  @NotEmpty
+  private String name;
+
+  @Min(0)
+  private int age;
+
+  public String getName() {
+    return name;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  public int getAge() {
+    return age;
+  }
+
+  public void setAge(int age) {
+    this.age = age;
+  }
+}
diff --git a/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/dto/Page.java b/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/dto/Page.java
new file mode 100644
index 0000000..3cc46f9
--- /dev/null
+++ b/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/dto/Page.java
@@ -0,0 +1,16 @@
+package com.supwisdom.leaveschool.foo.dto;
+
+import java.util.List;
+
+public class Page implements Dto {
+
+  private List<? extends Dto> data;
+
+  public Page(List<? extends Dto> data) {
+    this.data = data;
+  }
+
+  public List<? extends Dto> getData() {
+    return data;
+  }
+}
diff --git a/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/model/BarException.java b/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/exception/BarException.java
similarity index 90%
rename from samples/foo/src/main/java/com/supwisdom/leaveschool/foo/model/BarException.java
rename to samples/foo/src/main/java/com/supwisdom/leaveschool/foo/exception/BarException.java
index e5b18a1..9aa3b3c 100644
--- a/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/model/BarException.java
+++ b/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/exception/BarException.java
@@ -1,4 +1,4 @@
-package com.supwisdom.leaveschool.foo.model;
+package com.supwisdom.leaveschool.foo.exception;
 
 public class BarException extends Exception {
   public BarException() {
diff --git a/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/model/FooException.java b/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/exception/FooException.java
similarity index 89%
rename from samples/foo/src/main/java/com/supwisdom/leaveschool/foo/model/FooException.java
rename to samples/foo/src/main/java/com/supwisdom/leaveschool/foo/exception/FooException.java
index 1b319af..4d4f08d 100644
--- a/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/model/FooException.java
+++ b/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/exception/FooException.java
@@ -1,4 +1,4 @@
-package com.supwisdom.leaveschool.foo.model;
+package com.supwisdom.leaveschool.foo.exception;
 
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.ResponseStatus;
diff --git a/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/model/Foo.java b/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/model/Foo.java
index f86f7f2..5d4e0e0 100644
--- a/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/model/Foo.java
+++ b/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/model/Foo.java
@@ -1,16 +1,9 @@
 package com.supwisdom.leaveschool.foo.model;
 
-import javax.validation.constraints.Min;
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
-
 public class Foo {
 
-  @NotNull
-  @NotEmpty
   private String name;
 
-  @Min(0)
   private int age;
 
   public String getName() {
@@ -28,4 +21,9 @@
   public void setAge(int age) {
     this.age = age;
   }
+
+  public Foo(String name, int age) {
+    this.name = name;
+    this.age = age;
+  }
 }
diff --git a/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/repo/FooRepository.java b/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/repo/FooRepository.java
new file mode 100644
index 0000000..5293ecf
--- /dev/null
+++ b/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/repo/FooRepository.java
@@ -0,0 +1,11 @@
+package com.supwisdom.leaveschool.foo.repo;
+
+import com.supwisdom.leaveschool.foo.exception.FooException;
+import com.supwisdom.leaveschool.foo.model.Foo;
+
+import java.util.List;
+
+public interface FooRepository {
+
+  public List<Foo> getAll() throws FooException;
+}
diff --git a/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/repo/FooRepositoryImpl.java b/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/repo/FooRepositoryImpl.java
new file mode 100644
index 0000000..dc174e0
--- /dev/null
+++ b/samples/foo/src/main/java/com/supwisdom/leaveschool/foo/repo/FooRepositoryImpl.java
@@ -0,0 +1,18 @@
+package com.supwisdom.leaveschool.foo.repo;
+
+import com.supwisdom.leaveschool.foo.exception.FooException;
+import com.supwisdom.leaveschool.foo.model.Foo;
+import org.springframework.stereotype.Repository;
+
+import java.util.Arrays;
+import java.util.List;
+
+@Repository
+public class FooRepositoryImpl implements FooRepository {
+
+  @Override
+  public List<Foo> getAll() throws FooException {
+    throw new FooException();
+//    return Arrays.asList(new Foo("xiehuibing", 18), new Foo("chenbo", 18), new Foo("liuhongqing", 18));
+  }
+}
diff --git a/samples/foo/src/main/resources/META-INF/spring-configuration-metadata.json b/samples/foo/src/main/resources/META-INF/spring-configuration-metadata.json
deleted file mode 100644
index 1013fc1..0000000
--- a/samples/foo/src/main/resources/META-INF/spring-configuration-metadata.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-  "groups": [
-    {
-      "sourceType": "com.supwisdom.leaveschool.foo.mvc.ExceptionErrorProperties",
-      "name": "exception.error-map",
-      "type": "java.util.Map",
-      "description": "Exception class -> error string的映射"
-    }
-  ]
-}
diff --git a/samples/foo/src/main/resources/application.yaml b/samples/foo/src/main/resources/application.yaml
index b223a45..a2938f6 100644
--- a/samples/foo/src/main/resources/application.yaml
+++ b/samples/foo/src/main/resources/application.yaml
@@ -1,6 +1,8 @@
 spring:
   application:
     name: sample-foo
+  mvc:
+    log-resolved-exception: true
 
 infras:
   mvc:
