Chapter Four

JSON数据

默认情况下,当开发者新创建一个SpringBoot项目时,会添加Web依赖,在这个依赖中会默认加入jackson-databind作为Json处理器。

@RestController

组合注解,等于@Controller和ResponseBody

(但是,两个注解是返回页面,一个是返回Json)

静态资源

SpringBoot中对于SpringMVC的自动化配置都在WebMvcAutoConfiguration类中,开发者使用IntelliJ IDEA创建SpringBoot项目,就会默认创建static目录,静态资源一般放在这个目录下即可。

@ControllerAdvice

是@Controller的加强版,主要用来处理全局数据。

例子:文件上传大小超过限制的异常处理

在系统中定义CustomExceptionHandler类,然后添加@ControllerAdvice注解即可。当系统启动时,该类就会被扫描到Spring容器中

然后定义uploadException方法,在该方法上面添加@ExceptionHandler注解,其中定义的MaxUploadSizeExceededException.class表明该方法用来处理MaxUploadSizeExceededException类型的异常。如果想让该方法处理所有类型的异常,只需将MaxUploadSizeExceedeException改为Exception

方法的参数可以有异常实例、HttpServletResponse以及HttpServletRequest、Model等,返回值可以是一段Json、一个ModelAndView、一个逻辑视图等

CORS支持

CORS(Cross-Origin Resource Sharing) 是由W3C制定的一种跨域资源共享技术标准,其目的就是为了解决前端的跨域请求。在JavaEE中,最常见的前端跨域请求解决方案是JSONP,但是JSONP只支持GET请求,这是一个很大的缺陷,而CORS则支持多种HTTP请求方法。

跨域配置:

 

 注册拦截器

拦截器中的方法将按照preHandle->Controller->postHandle->afterCompletion的顺序执行,只有preHandle方法返回true时后面的方法才会执行,当拦截器链中存在多个拦截器时,postHandler在所有拦截器返回成功时才会调用,即若拦截器链中的第一个拦截器的preHandle方法返回false,则后面的方法都不会执行。

面向切面编程(AOP)

在系统运行时动态添加代码的方式成为面向切面编程。

常见概念:

Joinpoint(连接点):类里面可以被增强的方法即为连接点。例如,想修改哪个方法的功能,那么该方法就是一个连接点。

Pointcut(切入点):对Joinpoint进行拦截的定义即为切入点。例如,拦截所有以insert开始的方法,这个定义即为切入点。

Advice(通知):拦截到Joinpoint之后所要做的事情就是通知。例如,打印日志监控,通知分为前置通知、后置通知、异常通知、最终通知和环绕通知。

Aspect(切面):Pointcut和Advice结合。

Target(目标对象):要增强的类称为Target

 

 

posted @ 2019-08-19 09:32  lick  阅读(176)  评论(0编辑  收藏  举报