Spring面向切面编程(AOP)java
面向切面的编程,或AOP, 是一种编程技术,容许程序模块化横向切割关注点,或横切典型的责任划分,如日志和事务管理。编程
AOP核心就是切面,它将多个类的通用行为封装成可重用的模块,该模块含有一组API提供横切功能。好比,一个日志模块能够被称做日志的AOP切面。根据需求的不一样,一个应用程序能够有若干切面。在Spring AOP中,切面经过带有@Aspect注解的类实现。安全
关注点是应用中一个模块的行为,一个关注点可能会被定义成一个咱们想实现的一个功能。app
横切关注点是一个关注点,此关注点是整个应用都会使用的功能,并影响整个应用,好比日志,安全和数据传输,几乎应用的每一个模块都须要的功能。所以这些都属于横切关注点。框架
链接点表明一个应用程序的某个位置,在这个位置咱们能够插入一个AOP切面,它其实是个应用程序执行Spring AOP的位置。模块化
通知是个在方法执行前或执行后要作的动做,其实是程序执行时要经过SpringAOP框架触发的代码段。spa
Spring切面能够应用五种类型的通知:设计
before:前置通知,在一个方法执行前被调用。代理
after: 在方法执行以后调用的通知,不管方法执行是否成功。日志
after-returning: 仅当方法成功完成后执行的通知。
after-throwing: 在方法抛出异常退出时执行的通知。
around: 在方法执行以前和以后调用的通知。
切入点是一个或一组链接点,通知将在这些位置执行。能够经过表达式或匹配的方式指明切入点。
引入容许咱们在已存在的类中增长新的方法和属性。
被一个或者多个切面所通知的对象。它一般是一个代理对象。也指被通知(advised)对象。
代理是通知目标对象后建立的对象。从客户端的角度看,代理对象和目标对象是同样的。
BeanNameAutoProxyCreator
DefaultAdvisorAutoProxyCreator
Metadata autoproxying
织入是将切面和到其余应用类型或对象链接或建立一个被通知对象的过程。
织入能够在编译时,加载时,或运行时完成。
在这种状况下,切面由常规类以及基于XML的配置实现。
在这种状况下(基于@AspectJ的实现),涉及到的切面声明的风格与带有java5标注的普通java类一致。
Spring 的MVC
Spring 配备构建Web 应用的全功能MVC框架。Spring能够很便捷地和其余MVC框架集成,如Struts,Spring 的MVC框架用控制反转把业务对象和控制逻辑清晰地隔离。它也容许以声明的方式把请求参数和业务对象绑定。
Spring的MVC框架是围绕DispatcherServlet来设计的,它用来处理全部的HTTP请求和响应。
WebApplicationContext 继承了ApplicationContext 并增长了一些WEB应用必备的特有功能,它不一样于通常的ApplicationContext ,由于它能处理主题,并找到被关联的servlet。
控制器提供一个访问应用程序的行为,此行为一般经过服务接口实现。控制器解析用户输入并将其转换为一个由视图呈现给用户的模型。Spring用一个很是抽象的方式实现了一个控制层,容许用户建立多种用途的控制器。
该注解代表该类扮演控制器的角色,Spring不须要你继承任何其余控制器基类或引用Servlet API。
该注解是用来映射一个URL到一个类或一个特定的方处理法上。