Spring(二):Spring AOP 理解与应用
AOP
:面向切面编程,是一种对OOP
思想再增强的编程思想。它是使用动态代理的技术对一些公共的代码进行统一管理,在需要增强时,使用动态代理对业务方法进行增强。
AOP 适合那些具有横切逻辑的应用场合,如性能监控,访问控制,事务管理及日志记录,通过横向抽取机制为这类无法通过纵向继承体系进行抽象的重复性代码提供解决方案。
AOP 将分散在各个业务逻辑代码中的相同代码通过横向切割的方式抽取到一个独立的模块中。
AOP
:面向切面编程,是一种对OOP
思想再增强的编程思想。它是使用动态代理的技术对一些公共的代码进行统一管理,在需要增强时,使用动态代理对业务方法进行增强。
AOP 适合那些具有横切逻辑的应用场合,如性能监控,访问控制,事务管理及日志记录,通过横向抽取机制为这类无法通过纵向继承体系进行抽象的重复性代码提供解决方案。
AOP 将分散在各个业务逻辑代码中的相同代码通过横向切割的方式抽取到一个独立的模块中。
Spring框架提供了很多注解来方便使用其中的功能,现对常用的注解进行汇总。
Web 应用都应该要求对输入数据和请求数据做数据校验,将异常和非法数据过滤掉,确保系统的健壮性。
数据校验分客户端校验和服务端校验,客户端校验主要在页面通过JavaScript来实现,过滤正常用户的误操作,仅做初步过滤;服务端校验是整个应用阻止非法数据的最后防线,客户端校验绝不能替代服务端的校验,客户端校验可以降低服务器的负载。
汇总下@DateTimeFormatter
和@NumberFormat
的属性。
SpringMVC默认自带 Jackson
支持 Json
序列化,了解jackson的注解使用可以很方便自定义json
字符串。
项目中有一些数据是有一定的格式的(如:时间,日期,货币),或同类型的数据会有不同显示格式,这时需要对数据进行格式化。Spring提供了格式化框架,位于org.springframework.format
包,Formatter<T>
是其中最重要的接口。
后台接收前端传过来的数据往往与后台定义的实体类的属性类型并不匹配,就需要用到数据类型转换,若在每个代码文件中手动去转就非常麻烦。Spring MVC提供了默认转换器,也提供了接口用于实现自定义的类型转换器。
对开发者来说是国际化,对使用者来说是本地化。
SpringMVC 的国际化是建立在Java国际化的基础之上,也是通过提供不同国家/语言环境的消息资源,然后通过ResourceBundle
加载指定Local
对应的资源文件,再取得该资源文件中指定key
对应的消息。
Spring MVC提供了处理XML
格式请求响的 HttpMessageConverter
,只需在 Spring Web
容器中为RequestMappingHandlerAdapter
装配处理XML
的HttpMessageConverter
,并在交互过程中通过请求Accept
指定MIME
类型,Sping MVC就可以使服务端的处理方法和客户端XML格式的消息进行通信。开发者无须关心通信层的数据格式,可以将精力集中到业务处理上。
JavaWeb项目如果采用前后端完全分离架构,前端和后端部署在不同的服务器上,前端负责页面呈现和数据展示,后端提供数据接口给前端调用,这就产生了跨域请求。
跨域请求:指的是前端(一般指浏览器)向其它应用服务发起访问请求。一般发生在主域名不同、或子域名不同、或端口不同或协议不同的两个应用服务器之间的调用。一般指的是使用ajax
来调用。
实现跨域请求有解决方案,本篇只对SpringMVC自带支持CORS
技术进行详细描述,CORS
支持多种请求方式(get,post...
),在前端处理和普通请求几乎一样,后端配置也容易。