Java学习杂谈(十)--Spring

createh55个月前 (01-14)技术教程45

1.Spring MVC

关于IoC和AOP我在上篇已经稍微解释过了,这里先通过Spring的MVC框架来给大家探讨一下Spring的特点吧。(毕竟大部分人已经很熟悉Struts了,对比一下吧)

众所周知MVC的核心是控制器。类似Struts中的ActionServlet,Spring里面前端控制器叫做DispatcherServlet。里面充当Action的组件叫做Controller,返回的视图层对象叫做ModelAndView,提交和返回都可能要经过过滤的组件叫做Interceptor。

让我们看看一个从请求到返回的流程吧:

(1) 前台Jsp或Html通过点击submit,将数据装入了request域

(2) 请求被Interceptor拦截下来,执行preHandler()方法出前置判断

(3) 请求到达DispathcerServlet

(4) DispathcerServlet通过Handler Mapping来决定每个reuqest应该转发给哪个后端控制器Controller

(5) 各式各样的后端控制器Controller来处理请求,调用业务层对象来处理业务逻辑,然后返回一个ModelAndView对象

(6) 当Controller执行完毕,Interceptor会调用postHandle来做后置处理

(7) ModelAndView代表了呈现画面是使用的Model数据对象和View对象,由于只能返回一个对象所有起了这个名字封装这两个对象。

(8) 由ViewResolver对象来解析每个返回的ModelAndView对象应该呈现到哪一个视图(Jsp/Html等)中(包括Exception Resolver)

(9) 当View绘制完成之后Interceptor又会跳出来执行它的afterCompletion方法做善后处理。当然Interceptor的行为完全是配置的而不是强制的。

这样一个完整的流程就这样结束了,个人感觉Spring的MVC框架稍显复杂,不像Struts-1那么容易上手。不管是Controller、Model、ViewRosovler、Handle Mapping还是View,Spring MVC框架都已经为你提供了多种实现,想最大程度的减少程序员的编码,增加框架的适用性。大家有兴趣可以继续深入研究哈!

2.Spring AOP

记得最初我请教他人Spring是一个什么东西的时候,每个人都会提到AOP这个词语。我在上一篇已经解释过AOP基本原理,这次来跟大家说说Spring的AOP编程吧。不同的AOP框架会有其对AOP概念不同的实现方式,主要的差别在于所提供的Pointcut、Aspects的丰富程度,以及它们如何被织入应用程序、代理的方式等等。先熟悉一下AOP中的几个重要概念:

(1) Cross-cutting:横切,说白了就是需要统一处理的集合

(2) Aspects:将散落各处的横切收集起来,设计成各个独立可重用的对象称为Aspects。

(3) Advice: 对横切的具体实现,即等待插入一段逻辑。

(4) Joinpoint:Advice插入流程的时机点。

(5) Pointcut: 用于选择Joinpoint的程序结构,可以通过Annotation或者XML实现。

(6) Weave: Advice被应用至对象之上的过程称之为织入,有编译期、类加载期、运行期三种时间点策略。

如果你采用实现接口的方式,Spring会在执行时期适用java的动态代理,如果不实现接口,Spring会使用CGLIB产生代理类。AOP的概念很大很泛,而Spring只使用了其中的部分特性,毕竟Spring的目标是轻量级框架,比如它只支持对Method的Joinpoint,而不支持对Field的Joinpoint,理由是为了封装性。

其实我们可以把概念看得简单一点,AOP的目的是减少冗余代码,增强对较大项目的全局监控。Spring利用AOP可以规定一个集合和一套规则,在这个集合里所有的方法被invoke即调用的时候,都必须按照那套规则走一遍。那么首先对其中10个方法都要用到的处理代码就只用写一遍,如果是这10个方法来了就织入这段代码;其次,按照规则,也许所有的牵扯某个模块的方法调用的时候,我都需要做日志或者进行验证,那么我只要立足于这个集合的入口和出口,管他从哪里来去哪里,都能被有效的监控。我监控的可能不止是某个方法单独的行为,我还可以加入对流程控制的监控规则。例如是论坛,我规定注册了才能登录,而登录后才能发帖回帖下资源,于是所有这类流程都会被收集到我眼皮地下通过。

想要了解更多Java知识那就来关注我们吧! 精彩内容多多哦!不从错过哦!

多多关注

相关文章

Spring框架全面详解|Spring快速入门指南

Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。 本课程将深入浅出讲解Spring的核心技术IoC、AOP,剖析框架...

Spring框架功能分为哪些模块?

Spring框架采用的是分层架构,它一系列的功能要素被分成20个模块,这些模块大体分为Core Container、Data Access/Integration、Web、AOP(Aspect Ori...

Java Spring操作多种数据库,原来如此简单

在项目中我们经常会操作不同的数据库,原来Java Spring操作不同的数据库,如此简单;主要是引用不同数据库的驱动,你学会了,快动手试试吧。数据库连接部分代码:spring: applicati...

Java面试:应聘Java开发工程师的基本要求是什么?

根据技术水平不同,Java程序员可以分为初级、中级、高级、资深等。不同级别的Java程序员,企业的要求也是有区别。下面整理了初级Java程序员和中级Java程序员的应聘要求,供大家参考:(具体要求结合...