切面

PlayJava SSM框架简介

只谈情不闲聊 提交于 2019-12-21 11:38:21
SSM框架   SSM是Spring + Spring MVC + MyBatis的缩写,是一个继SSH之后目前比较主流的JavaEE框架,适用于搭建各种企业级应用系统。 Spring   Spring是一个开源的、于2003年兴起的、轻量级的Java开发框架,由 Rod Johnson 在其著作 Expert One-On-One J2EE Development and Design 中阐述的部分理念和原型衍生而来,是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成各种事情,具有简单性、可测试性和松耦合等特点,其用途不仅限于服务器端的开发,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 IoC   控制反转,即Inversion of Control,利用工厂模式将对象交给容器管理,只需在spring的配置文件中配置相应的bean,然后对其设置相应的属性,让spring容器来生成类的实例对象以及管理对象。在spring容器启动的时候,spring会把配置文件中配置好的bean都进行初始化,然后在需要调用的时候把已经初始化好的这些bean分配给调用这些bean的类,因为调用了bean对象的setter方法来注入,所以就不需要再去使用new来实例这些bean了

面向切面编程

ぐ巨炮叔叔 提交于 2019-12-21 06:17:00
这种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。 面向切面编程(AOP是Aspect Oriented Program的首字母缩写),我们知道,面向对象的特点是继承、多态和封装。而封装就要求将功能分散到不同的对象中去,这在软件设计中往往称为职责分配。实际上也就是说, 让不同的类设计不同的方法。这样代码就分散到一个个的类中去了。这样做的好处是降低了代码的复杂程度,使类可重用。 但是人们也发现,在分散代码的同时,也增加了代码的重复性。什么意思呢?比如说,我们在两个类中,可能都需要在每个方法中做日志。按面向对象的设计方法, 我们就必须在两个类的方法中都加入日志的内容。也许他们是完全相同的,但就是因为面向对象的设计让类与类之间无法联系,而不能将这些重复的代码统一起来。 也许有人会说,那好办啊,我们可以将这段代码写在一个独立的类独立的方法里,然后再在这两个类中调用。但是,这样一来,这两个类跟我们上面提到的独立的类就有耦合了, 它的改变会影响这两个类。那么,有没有什么办法,能让我们在需要的时候,随意地加入代码呢?这种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。 一般而言,我们管切入到指定类指定方法的代码片段称为切面,而切入到哪些类、哪些方法则叫切入点。有了AOP,我们就可以把几个类共有的代码,抽取到一个切片中

springboot学习之路——AOP

懵懂的女人 提交于 2019-12-21 02:59:40
0、前言 1、什么是AOP   AOP(面向切面编程),是一种横切技术,是对OOP的补充和完善;   使用AOP的横切,可以对系统进行无侵入性的日志监听、事务、权限管理等;   思想上跟拦截器其实类似;拦截器是对action进行拦截处理,AOP是对切面进行拦截处理,其实切面也属于一种action集合;   AOP可以很好解耦; 2、AOP的组成   Aspect:切面;   Join point:连接点;   Advice:通知,在切入点上执行的操作;   Poincut:带有通知的连接点;   target:被通知的对象;   AOP proxy;AOP代理; 其中,Advice(通知)分为以下几种: before(前置通知): 在方法开始执行前执行 after(后置通知): 在方法执行后执行 afterReturning(返回后通知): 在方法返回后执行 afterThrowing(异常通知): 在抛出异常时执行 around(环绕通知): 在方法执行前和执行后都会执行 通知的执行顺序: around > before > around > after > afterReturning 一、实现示例   光看理论和定义,很多人可能都觉得很难理解,其实用法比较简单,不难的,   我们先来个简单的例子,看完例子你可能就豁然开朗了,   所谓程序员,好看书不如多动手:    实现:

Spring框架基础解析

痞子三分冷 提交于 2019-12-20 02:07:26
Spring是一个轻量级的、非侵入式的容器框架;对Bean对象的生命周期进行管理。 Spring框架的核心:IOC(控制反转)、DI(依赖注入)、AOP(面向切面编程)。 (1) IOC:控制反转。 传统的Java开发过程中,当需要一个对象的时候,我们需要自己new或者getInstance等直接或间接调用构造方法创建一个对象;而在Spring容器中,Spring容器利用 工厂模式(BeanFactory)为我们创建了所需要的对象,使用时无须自己创建,直接调用Spring为我们创建的对象即可,这就是控制反转的思想。 优点:简化了我们对对象的管理,交给了Spring管理;程序员不用再自己创建对象,需要时直接从Spring中取。由主动创建对象变成了被动接收对象,控制权反转,减轻了程序员的代码量,提高了开发效率。打个比方:IOC就像现在得订餐APP,以前我们吃饭需要自己去做,去New一顿饭出来;现在我们有了订餐APP(Spring),我们只需要登录这个APP,在APP订餐页面applicationtext.xml(Spring配置文件)填写你想吃的饭(也就是Bean对象),然后就可以预定你要吃的饭,想要猪头肉就会给你送猪头肉,想要红烧肉就会送红烧肉;各种菜就像是Property,这样我们坐在家中就可以吃到饭了,不用自己再动手去做了。 (2)DI:依赖注入。

spring注解-AOP动态代理-@EnableAspectJAutoProxy注解如何工作

梦想的初衷 提交于 2019-12-20 01:14:49
一.概述 AOP面向切面编程,生成目标方法所属类的代理类。代理类和目标类的关系:代理类继承目标类,并重载了目标类的方法。 代理类重载方法体里加入了切面业务逻辑和目标类方法的调用。 用户如何使用:从容器中获取目标类,实际上是获取代理类的实例, 代理类实例调用重载了父类的方法,就实现了AOP。 二.步骤 1.在配置类上添加@EnableAspectJAutoProxy注解,开启注解版的AOP功能 2.声明切面类:@Aspect表明这是一个切面类,注:@Aspect是spring-annotation2/libs/com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar的注解, 在其org.aspectj.lang.annotation包下包含了切面相关的的注解。aop包下载地址:https://www.eclipse.orgaspectj 3.声明切面方法: 1.切点:在哪些目标方法上添加该切面方法 。切点表达式:execution(* com.dr.service.*.buy*(..)):方法访问权限 包路径.类名.方法名(参数类型,参数类型...) 参数类型可以用“..”代替。 2.重用切点:在切面中声明切点方法:添加@Pointcut注解, @Pointcut(value="execution(*******)") 切点方法返回值

浅析Spring Boot

大憨熊 提交于 2019-12-19 03:06:56
一、首先了解什么是Spring? Spring是一个开源的框架,Spring为简化企业级应用开发而生,使用Spring可以使简单的JavaBean实现以前只有EJB才能实现的功能。Spring是一个IOC和AOP容器框架。在java开发领域,Spring相对于EJB来说是一种轻量级的,非侵入性的Java开发框架。 Spring主要核心是: (1).控制反转(IOC): 以前传统的java开发模式中,当需要一个对象时,我们会自己使用new或者getInstance等直接或者间接调用构造方法创建一个对象,而在Spring开发模式中,Spring容器使用了工厂模式为我们创建了所需要的对象,我们使用时不需要自己去创建,直接调用Spring为我们提供的对象即可,这就是控制反转的思想。实例化一个java对象有三种方式:使用类构造器,使用静态工厂方法,使用实例工厂方法,当使用spring时我们就不需要关心通过何种方式实例化一个对象,spring通过控制反转机制自动为我们实例化一个对象。 (2).依赖注入(DI): Spring使用java Bean对象的Set方法或者带参数的构造方法为我们在创建所需对象时将其属性自动设置所需要的值的过程就是依赖注入的基本思想。 (3).面向切面编程(AOP): 在面向对象编程(OOP)思想中,我们将事物纵向抽象成一个个的对象。而在面向切面编程中

SpringAop (一)

纵饮孤独 提交于 2019-12-18 00:15:08
要在 Spring 应用中使用 AspectJ 注解, 必须在 classpath 下包含 AspectJ 类库: aopalliance.jar、aspectj.weaver.jar 和 spring-aspects.jar 将 aop Schema 添加到 <beans> 根元素中. 要在 Spring IOC 容器中启用 AspectJ 注解支持, 只要在 Bean 配置文件中定义一个空的 XML 元素 <aop:aspectj-autoproxy> 当 Spring IOC 容器侦测到 Bean 配置文件中的 <aop:aspectj-autoproxy> 元素时,会自动为与 AspectJ 切面匹配的 Bean 创建代理要在 Spring 中声明 AspectJ 切面,只需要在 IOC 容器中将切面声明为 Bean 实例. 当在 Spring IOC 容器中初始化 AspectJ 切面之后,Spring IOC 容器就会为那些与 AspectJ 切面相匹配的 Bean 创建代理. 在 AspectJ 注解中, 切面只是一个带有 @Aspect 注解的 Java 类. 通知是标注有某种注解的简单的 Java 方法. AspectJ 支持 5 种类型的通知注解: @Before: 前置通知, 在方法执行之前执行 @After: 后置通知, 在方法执行之后执行

面向切面编程(aop)

痞子三分冷 提交于 2019-12-17 11:11:53
1、AOP的概念: aop采用了横向抽取机制替代了传统地纵向继承体系的重复性代码,不通过过修改源代码可以实现功能的添加 2、AOP的原理: 使用动态代理的方式,创建接口实现类的代理类 注:使员工jdk的动态代理是针对有接口的情况 使用cglib动态代理是针对没有接口的情况,创建某个类子类的代理类 3.AOP的相关术语: 1)JointPoint(连接点):那些被拦截到的点,主要指方法,因为spring框架中只支持方法类型的连接点,也就是类里面可以被增强的方法 2)PointCut(切入点):对哪些需要拦截的JointPoint的定义,实际就是类里面实际被增强的方法 3)Advice(通知\增强):对拦截到的JointPoint所做的事叫做通知,通知分为前置通知,后置通知,环绕通知,异常通知,最终通知(切面需要完成的功能),就是实际添加的功能的逻辑 前置通知:方法之前执行 后置通知:方法之后执行 环绕通知:方法之前之后执行 异常通知:方法异常执行 最终通知:后置之后执行 4)Aspect(切面):通知与切入点的结合,把增强具体应用到切入点的过程 5)Introduction(引介):在不修改代码的前提下,在运行期间动态的向类中添加一些属性或者方法 6)Target(目标对象):代理的目标对象(要增强的类) 7)Weaving(织入)

【SSH进阶之路】Spring的AOP逐层深入——AOP的基本原理(六)

假如想象 提交于 2019-12-17 00:28:40
经过我们对Spring的IOC不断的深入学习,Spring的面貌逐渐变得清晰,我们对Spring的了解也更加的深入。从这篇博文开始我们学习Spring的第二大核心内容:AOP。 什么是AOP AOP(Aspect Oriented Programming),意思是面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP基于IoC基础,是对OOP( Object Oriented Programming,面向对象 )的延续。同时,AOP实际是GOF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,提高代码的灵活性和可扩展性,AOP可以说也是这种目标的一种实现。 AOP将应用系统分为两部分,核心业务逻辑(Core business concerns)及横向的通用逻辑,也就是所谓的方面Crosscutting enterprise concerns,例如,所有大中型应用都要涉及到的持久化管理(Persistent)、事务管理(Transaction Management)、安全管理(Security)、日志管理(Logging)和调试管理(Debugging)等。 AOP与OOP的区别 AOP、OOP在字面上虽然非常类似,但却是面向不同领域的两种设计思想。OOP(面向对象编程)针对业务处理过程的实体及其属 性和行为进行抽象封装

spring 学习笔记

旧巷老猫 提交于 2019-12-16 21:57:25
闲话 最近简单的学习了一下 springboot,记录下自己的一些学习心得,没有体系,没有深入讲解,基本只涉及到一些概念级,权当随笔记录。。他日翻看时,希望能有所帮助,肯定也有理解不到位之处,还请大家指正 为什么会有 spring 学习一项技术,我们首先需要弄明白,这项技术出现的意义是什么,它能够解决什么场景问题,知其然,必先知其所以然 一般大型的企业级java应用,都会包含很多的内容模块,包括各种接口、逻辑、页面、存储等,它们之间可能存在复杂的依赖关系,如何对他们进行统一的管理和调度是影响开发效率的重要因素 容器化管理我们的应用程序,是上述问题的通用解决方案:应用的开发针对 pojo、bean或者组件,然后交由容器去负责组装调用,实现解耦 在spring之前,java官方推荐的解决方案是 EJB,但是 EJB 是一个非常重型的框架,上手成本很高,对于中小型的企业应用支持并友好 于是民间组织在 EJB 的容器化管理的基础上,创建了 spring,相对来说更轻量级的开发框架,简单对比 EJB 的话,他俩的优缺点: EJB 面向的是组件级容器管理,spring 则是 bean 的管理,更细粒度,对于开发的理解更容易 EJB 和 spring 都支持 ioc 和 aop,但是 spring 封装的功能更强大简单,早期spring只支持xml配置方式,ejb只支持注解方式,随着发展