springboot的全局处理
@ControllerAdvice 和@ExceptionHandler组合处理全局异常信息
@ControllerAdvice
public class CustomExceptionHandler {
@ExceptionHandler(MaxUploadSizeExceededException.class)
public void uploadException(MaxUploadSizeExceededException e, HttpServletResponse resp)throws IOException{
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
out.write("大小超出限制");
out.flush();
out.close();
}
}
@ControllerAdvice就是@Controller的增强版,主要用来处理全局数据,一般搭配@ExceptionHandler @ModelAttribute 以及@InitBinder使用。
Springboot也可以设置属性全局使用
/**全局加数据
* @author wyh
* @date 2021年04月14日 16:41
*/
@ControllerAdvice
public class Global {
/**value代表返回的key是info,返回值则是方法的返回值*/
@ModelAttribute(value = "info")
public Map<String,String> userInfo(){
HashMap<String, String>map=new HashMap<>(15);
map.put("username","张三");
map.put("gender","女");
return map;
}
}
通过Model可以读取全局数据
/**读取全局数据
* @author wyh
* @date 2021年04月14日 16:48
*/
@RestController
public class UserController {
@GetMapping("/hello")
public void helloController(Model model){
Map<String ,Object> map= model.asMap();
Set<String> keySet= map.keySet();
for (String keys:
keySet) {
String key=keys;
Object value=map.get(key);
System.out.println(key+">>>"+value);
}
}
}