spring aop原理

Maven(二)

匿名 (未验证) 提交于 2019-12-03 00:22:01
一、maven父工程与子模块的拆分与聚合原理       问题描述:将ssh工程拆分为多个模块开发        1.1、拆分原理         创建一个maven project(pom),然后在创建三个子模块(maven moudule),其中三个子模块,分别为 dao、service、web,也就是将三层的内容分别独立为一个项目,进一步将耦合性降低,其中如何将他们连接起来了,看下图。                            为什么需要创建parent父工程来管理其下三个子模块呢?并让其子模块继承他呢?           继承是为了消除重复,如果将dao、service、web分开创建独立的工程则每个工程的pom.xml文件中的内容存在重复,比如:设置编译版本、锁定spring的版本的等,可以将这些重复的配置提取出来在父工程的pom.xml中定义         将三层都独立分开来了,web层如何调用service层代码?service层又如何调用dao层的代码呢?           这个在没有maven之前是不可以这样做的,但是有了maven一切都不一样了,web层调用service层的代码其实很简单,因为service是一个完整的项目,那么我们在web层这个项目中想要使用别得项目中的代码,只需要通过maven的pom.xml文件编写对应的坐标

Spring框架 --- 深入

血红的双手。 提交于 2019-12-03 00:11:01
1.Spring IOC    IOC技术: 控制反转,也叫(依赖注入)   控制反转:Bean的生命周期不受你控制,而是交给Spring容器管理。   Spring框架如何利用IOC ?:   实现了控制反转,Spring容器能帮我们实例化对象,但是并没有做到DI(依赖注入)。   作用: (1) 构建Bean (2) Bean之间有依赖关系的话,可以自动帮我们注入 优势: 解耦:低耦合,实现面向接口的编程思想 2.Spring AOP    动态代理设计模式   原理和静态代理设计模式没有本质区别:    被代理类、代理类、被代理和代理类是同一个接口   代理类的创建过程有区别:   (1)静态代理:    自己编写代理类,代理类自己实现接口   (2)动态代理:    代理类不需要自己编写,他Proxy.newProxyinstance(xx)静态方法   在程序执行过程中,动态产生代理类   InvocationHandler:里边含有被代理类的引用    AOP:面向切面的编程   代理模式主要的作用:    在业务代码不之情的情况下,切入额外的功能。 原理:Spring框架具有IOC的功能,所以我们可以利用该功能配置业务Bean 。 代理设计模式(动态) 例如: AccountServiceImpl <bean id="AccountServiceImpl" class

Spring复习

匿名 (未验证) 提交于 2019-12-03 00:05:01
文章目录 Spring介绍 Spring优点 Spring概念 IOC思想 DI Spring AOP 思想应用 Spring底层实现: 动态代理 基于代理类的AOP AOP名词 AspectJ开发 Spring的核心容器 BeanFactory(过时) ApplicationContext BeanFactory 和 ApplicationContext 的区别: Bean id 属性和 name 属性标签的配置 scope 属性:Bean 的作用范围. Bean 的生命周期的配置: Spring 生成 Bean 的时候三种方式(了解) Spring 的 Bean 的属性注入(XML) Spring 的 Bean 的属性注入(注解) Bean 的作用范围的注解: Bean 的生命周期的配置: Spring 的 Bean 管理的方式的比较 Spring 提供了很多持久层技术的模板类简化编程 Spring 进行事务管理一组 API Spring介绍 Spring是一站式的轻量级Java开源框架,Spring框架性质是属于容器性质的,容器中装什么对象就有什么功能,提供了JavaEE各层的解决方案。实现了工厂模式的工厂类(ApplicationContext)。 表现层:Spring MVC 持久层:JdbcTemplate、ORM框架整合 业务层:IOC、AOP、事务控制 一站式

Srping Boot 整合AOP面向切面编程--(日志系统处理)

匿名 (未验证) 提交于 2019-12-02 23:52:01
一、前言 众所周知,spring最核心的两个功能是aop和ioc,即面向切面和控制反转。本文会讲一讲SpringBoot如何使用AOP实现面向切面的过程原理。 二、什么是AOP? aop全称 Aspect Oriented Programming ,面向切面,AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。其与设计模式完成的任务差不多,是提供另一种角度来思考程序的结构,来弥补面向对象编程的不足。   通俗点讲就是提供一个为一个业务实现提供切面注入的机制,通过这种方式,在业务运行中将定义好的切面通过切入点绑定到业务中,以实现将一些特殊的逻辑绑定到此业务中。   举个例子,项目中有记录操作日志的需求、或者流程变更是记录变更履历,无非就是插表操作,很简单的一个save操作,都是一些记录日志或者其他辅助性的代码。一遍又一遍的重写和调用。不仅浪费了时间,又将项目变得更加的冗余,实在得不偿失。   所以就需要面向切面aop就出场了。 三、关于AOP相关名词 要理解SpringBoot整合aop的实现,就必须先对面向切面实现的一些aop的名称有所了解,不然也是云里雾里。 切面(Aspect) :一个关注点的模块化。以注解@Aspect的形式放在类上方,声明一个切面。 连接点(Joinpoint)

六、spring原理(3)AOP原理

匿名 (未验证) 提交于 2019-12-02 23:41:02
一、概念 "横切"的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块, 并将其命名为"Aspect",即切面。 使用"横切"技术,AOP 把软件系统分为两个部分:核心关注点和横切关注点。 业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处基本相似,比如权限认证、日志、事物。 AOP 的作用在于分离系统中的各种关注点,将核心关注点和横切关注点分离开来。 AOP主要应用场景有 Authentication 权限 Caching 缓存 Context passing 内容传递 Error handling 错误处理 Lazy loading 懒加载 logging, tracing, profiling and monitoring 记录跟踪 优化 校准 Performance optimization 性能优化 Resource pooling 资源池 Synchronization 同步 二、AOP核心 1.切面(aspect): 2.横切关注点: 3.连接点(joinpoint): 4.切入点(pointcut): 5.通知(advice): 所谓通知指的就是指拦截到连接点之后要执行的代码,通知分为前置、后置、 异常、最终、环绕通知五类。 6.目标对象: 7.织入(weave)

Spring4学习回顾之路11-AOP

南楼画角 提交于 2019-12-02 21:42:07
  Srping的核心除了之前讲到的IOC/DI之外,还有一个AOP(Aspect Oriented Programming:面向切面编程):通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术,利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。主要的功能: 日志记录,性能统计,安全控制,事务处理,异常处理等等。   在介绍AOP之前,先介绍动态代理;代理设计模式的原理:使用一个 代理将对象包装起来, 然后用该代理对象取代原始对象,任何对原始对象的调用都要通过代理,代理对象决定是否以及何时将方法调用转到原始对象上。 案例:基于接口实现的动态代理:JDK动态代理 首先定义一个接口,用于运算的Operation.java package com.lql.proxy; /** * @author: lql * @date: 2019.10.29 * Description: */ public interface Operation { //加法 int add(int i,int j); //减法 int sub(int i,int j); } 再来定义实现类OperationImpl.java package com.lql.proxy; /** * @author: lql * @date:

Spring——代理实现AOP

懵懂的女人 提交于 2019-12-02 16:03:10
一、静态代理实现   1.接口(抽象主题)       2.接口的实现类(真实主题)      3.代理类(代理主题)       4.测试类:      ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); ProxySubject proxySubject =(ProxySubject) context.getBean("proxySubject"); proxySubject.doSome(); 二、JDK动态代理    JDK动态代理所用到的代理类在 程序调用到代理类对象时才由JVM真正创建 ,JVM根据传进来的 业务实现类对象 以及 方法名 ,动态地创建了一个代理类的class文件并被字节码引擎执行,然后通过该代理类对象进行方法调用。    1.抽象主题,真实主题与上面一致    2.动态代理类 package com.cmy.handler; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class DoSomeBeanFactory implements

IOC和AOP扩展

与世无争的帅哥 提交于 2019-12-02 15:37:12
使用多种方式实现Ioc   使用构造注入          构造注入是一种高内聚的体现,特别是针对有些属性需要在对象在创建时候赋值,且后续不允许修改(不提供 setter方法)       实例:        Greeting类:                配置applicationContext.xml文件:                测试:                结果:                 注意点:        一个 <constructor-arg>元素表示构造方法的一个参数,且使用时不区分顺序。当构造方法的参数出现混淆,无法区分时,可以通过<constructor-arg>元素的index属性指定该参数的位置索引,位置从0开始。<constructor-arg>元素还提供了type属性用来指定参数的类型,避免字符串和基本数据类型的混淆。            构造注入的时效性好,在对象实例化就得到所依赖的对象,便于在对象的初始化方法中使用依赖对象;但受限于方法重载的形式,使用灵活性不足。设值注入使用灵活,但时效性不足,并且大量的 setter访问器增加了类的复杂性。Spring并不倾向于某种注入方式,用户应该根据实际情况进行合理的选择。   使用p命名空间注入 p命名空间的特点是使用属性而不是子元素的形式配置Bean的属性

Spring AOP

廉价感情. 提交于 2019-12-02 11:46:28
1.1 AOP概述 1) 在软件业, AOP 为Aspect Oriented Programming 的缩写,意为: 面向切面编程 ,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。 2) AOP是OOP(面向对象编程)的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。 3) 利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。 4) AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码 以日志为例: 面对对象编程:每个service 需要继承 baseservice ,过于耦合 采用aop的横向抽取机制 声明一个切面类 ,不通过继承而是通过代理拦截的方式,在方法前后切入 降低业务耦合 5) 经典应用:事务管理、性能监视、安全检查、缓存 、日志等 【画图】 6) Spring AOP使用纯Java实现,不需要专门的编译过程和类加载器,在运行期通过代理方式向目标类织入增强代码 7) AspectJ 是一个基于Java 语言的AOP 框架 ,Spring2.0开始,Spring AOP引入对Aspect的支持,AspectJ扩展了Java语言,提供了一个专门的编译器,在编译时提供横向代码的织入 1.2 AOP实现原理 1)

Spring AOP的使用及案例

℡╲_俬逩灬. 提交于 2019-12-02 11:39:41
一、什么是AOP   AOP(Aspect-Oriented Programming,面向切面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。通过 预编译 方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是 OOP 的延续,是软件开发中的一个热点,也是 Spring 框架中的一个重要内容,是 函数式编程 的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的 耦合度 降低,提高程序的可重用性,同时提高了开发的效率。 二、为什么需要AOP    1.分离系统中的各种关注点,将核心关注点和横切关注点分离开来。   2.减少代码的重复,各个模块的重用性加强。   3.降低 模块间的耦合度,提高代码的可操作性和可维护性。 三、AOP原理   将复杂的需求分解出不同方面,将散布在系统中的公共功能集中解决   采用代理机制组装起来运行,在不改变原程序的基础上对代码段进行增强处理,增加新的功能。    四、AOP相关术语    1 增强处理类型      前置增强 :目标方法调用前     后置增强 :目标方法调用后     环绕增强 :前置+后置     异常抛出增强 :只有在目标方法抛出异常时才执行      最终增强 :finally     2 AOP设计单元 五、AOP案例   1