springboot单元测试之全局异常(四)

1结构

 

 2新建User类,添加属性,添加set/get方法,添加构造方法

package com.example.demo.bean;

import java.util.Date;


import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;

public class User {
/**
* 姓名
*/
private String name;
/**
* 性别
* @JsonIgnore不返回字段
*/
@JsonIgnore
private String sex;
/**
* 工作
*/

private String work;
/**
* 住址
*/
private String address;
/**
* 存款
* @JsonProperty("account") 不返回真实的字段给别人,返回别名给别人
*/
@JsonProperty("account")
private int deposit;
/**
* 创建时间
* @JsonFormat(pattern="yyyy-MM-dd hh:mm:ss",locale="zh",timezone="GMT+8") 转换时间格式
*/
@JsonFormat(pattern="yyyy-MM-dd hh:mm:ss",locale="zh",timezone="GMT+8")
private Date createTime;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getWork() {
return work;
}
public void setWork(String work) {
this.work = work;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getDeposit() {
return deposit;
}
public void setDeposit(int deposit) {
this.deposit = deposit;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public User(String name, String sex, String work, String address, int deposit, Date createTime) {
super();
this.name = name;
this.sex = sex;
this.work = work;
this.address = address;
this.deposit = deposit;
this.createTime = createTime;
}
}

 

 

 

 3添加一个异常类ExceptionController

package com.example.demo.controller;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import com.example.demo.bean.User;

/**
* 测试异常
* @author Administrator
* 可以不是用@RestController,使用@RestControllerAdvice
*/
@RestController
//@RestControllerAdvice
@PropertySource("classpath:application.properties")
public class ExceptionController {

/**
* 监听日志
*/
private static final Logger log=LoggerFactory.getLogger(ExceptionController.class);
/**
* 编写一个异常
* @return
*/
@RequestMapping(value="/api/v1/test_exception")
public Object index() {
int i=1/0;
return new User("李明", "35","高级程序员", "武汉市青山区" , 9000, new Date());
}

/**
* @ExceptionHandler 捕获全局异常,处理所有不可知的异常
* @ResponseBody可以注释掉,但是要在类上面添加@RestControllerAdvice,map返回的是json格式
* @param e
* @param request
* @return
*/
@ExceptionHandler(value = Exception.class)
@ResponseBody
Object handleException(Exception e,HttpServletRequest request) {
log.error("url{},msg{}", request.getRequestURL(), e.getMessage());
Map<String ,Object> map=new HashMap<>();
map.put("code",200);
map.put("msg", e.getMessage());
map.put("url", request.getRequestURL());
return map;
}

}

 

 

 

 run application ,可以查看结果

 

 

 

posted @ 2020-08-21 11:46  我是一只老白兔  阅读(326)  评论(0编辑  收藏  举报