• 碧雪天虹
    2019-08-13
    demo访问 http://localhost:8080/coffee/ 可以拿到列表, 访问 http://localhost:8080/coffee 就不行(最后面少个斜杆), 会报 400 错误.
    修改 @GetMapping(path = {"", "/"}, params = "!name") 为 @GetMapping(path = {""}, params = "!name") 之后, 两种方式都可以访问.
    从兼容性角度来看, RequestMapping 的路径最后面不要带斜杆"/"比较好.
    
     4
  • 兔2🐰🍃
    2019-05-16
    丁老师您好,这里实体类中为什么要加
    @JsonIgnoreProperties(value = {"hibernateLazyInitializer"}) 或者
    spring.jackson.serialization.fail-on-empty-beans=false

    练习@RequestMapping(path = "/coffee/{id}"...时,发现实体类没加这句时,在return Coffee(能获取值)报"Type definition error: [simple type, class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor];”错误
    展开

    作者回复: 这里正好返回的是Hibernate的代理对象,如果没有加jackson-datatype-hibernate5这个依赖,序列化时就会报错,因此要做些特殊的属性处理。后面的例子中我们会在waiter-service的pom.xml里加上jackson-datatype-hibernate5的,后续的课程示例里你可以留意一下。

    
     3
  • AaronYu
    2019-11-11
    老师,我 coffeeController 里面这么写
    @RequestMapping(path = "/",params = "name")
     @ResponseBody
        public Coffee getByName(String name) {
            log.info("Name {}",name);
            return coffeeService.getCoffee(name);
        }
    不加入 @RequestParam(),也可以成功拿到 Coffee 的值,是因为 params 里面的 name 自动绑定到我的 method parameter 中了吗? ps: 函数方法参数不是 name 的时候,不会绑定上去。
    展开

    作者回复: 是的,同名会绑,但有时也会绑不上,所以一般我都会手工指定一下,另外也有PathVariable,明确指定一下省心

    
     1
  • 京京beaver
    2019-08-12
    coffee和order这两个实体类需要加上后面这个注解,不然jackson在解析实体类里面null属性值时会报错。@JsonIgnoreProperties(value = { "hibernateLazyInitializer"})

    作者回复: 这是一种处理方式,因为会返回代理对象,也可以配置Hibernate对应的Module

    
     1
  • 进哥
    2019-10-15
    课程笔记:
    @Controller
    1 定义映射关系
    有许多方法头地处理(Handler Methods)的注解,具体可以看官网:
    https://docs.spring.io/spring/docs/5.2.0.RELEASE/spring-framework-reference/web.html#mvc-ann-methods

    2 实例
    定义请求头参数:
    @PostMapping(path = "/", consumes = MediaType.APPLICATION_JSON_VALUE,
                produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
        @ResponseStatus(HttpStatus.CREATED)
        public CoffeeOrder create(@RequestBody NewOrderRequest newOrder) {
            log.info("Receive new Order {}", newOrder);
            Coffee[] coffeeList = coffeeService.getCoffeeByName(newOrder.getItems())
                    .toArray(new Coffee[] {});
            return orderService.createOrder(newOrder.getCustomer(), coffeeList);
        }

    consumes 定义请求头参数,只能被JSON消费
    produces 定义 Content-Type :APPLICATION_JSON_UTF8_VALUE

    3 看源码,老师还带我们看了看源码 RequestMapping 的源码,在idea 可以直接点击进去查看。
    展开
    
    
我们在线,来聊聊吧