spring aop原理

Java Web-Spring框架(二)

你说的曾经没有我的故事 提交于 2020-01-19 00:07:39
1、后处理 bean 对一个bean生效 2、注解和xml混合使用 a、将所有的 bean 都配置在 xml 中,<bean id="" class="" b、将所有的依赖都使用注解,@Autowired,默认不生效。为了生效,需要在xml中配置:<context:annotation-config,如图: 上图中,两个注解一般不一起使用,“注解1”扫描含有注解(@Component等)类,注入注解也会自动生效。“注解2”只在xml和注解(注入)混合使用时,使注入注解生效。 3、AOP 3.1、AOP介绍 AOP(Aspect Oriented Programming),面向切面编程。通过预编译方式和运动期动态代理实现程序功能的统一维护的一种技术。是OOP(面向对象编程)的延续,采取 横向抽取 机制,取代了传统 纵向继承 体系重复性代码。如图: 经典应用:事务管理、性能监视、安全检查、缓存、日志等。 Spring AOP使用纯Java实现,不需要专门的编译过程和类加载器,在运行期通过代理方式向目标类织入增强代码。 AOP实现原理 AOP底层将采用代理机制进行实现。 接口 + 实现类:spring采用 jdk的 动态代理 Proxy 实现类:spring采用 cglib字节码增强 AOP术语【掌握】 target:目标类,需要被代理的类。例如:UserService

Spring

若如初见. 提交于 2020-01-18 04:31:22
什么是Spring Spring是一个开发源代码的设计层面的框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。 Spring的特点 方便解耦,简化开发 通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。 AOP编程的支持 通过Spring提供的AOP功能,方便进行面向切面的编程, 许多不容易用传统OOP实现的功能可以通过AOP轻松应付。 声明式事务的支持 在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来, 通过声明式方式灵活地进行事务的管理,提高开发效率和质量。 方便集成各种优秀框架 Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、Hessian、Quartz)等的直接支持。 降低Java EE API的使用难度 Spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用等) 提供了一个薄薄的封装层,通过Spring的简易封装,这些Java EE API的使用难度大为降低。 Java 源码是经典学习范例

Spring中的Aop的理解

自作多情 提交于 2020-01-17 05:20:24
也是闲来无事,所有从头再把Spring 实战通读一下。 1.介绍面向切面编程的原理。 2.通过POJO创建切面。 3.使用注解@AspectJ。 4为切面注入依赖。 下面主要围绕上面这四点开始介绍 首先,切面能帮助我们做什么? 专业一点就是可以帮助我们模块化横切关注点。【 横切关注点 】描述为影响应用多处的功能。(安全,事务,其他,等) 划分多个模块,每个模块的核心都需要为特定的业务领域提供服务,但是这些模块也都需要类似的辅助功能。 想要重用这些功能的话,常见的就是面向对象的继承(inheritance)和委托(delegation)。 切面提供了取代继承和委托的另一种可选方案。 在使用面向切面编程时,我们还是在一个地方定义通用的功能,但是可以通过声明的方式定义这个功能要以何种方式在何处应用。 而无需修改受影响的类。横切关注点可以模块化为一个特殊的类,这些类又被称为 切面(aspect) [ 这样做的好处就是,现在的每个关注点都集中在了一个地方。而不是分散到多处代码中。降低了耦合,再者就是简洁,它们这些类只包含关注点的代码,二次要的关注点代码被转移到了切面中。 ] Aop 相关术语 通知(Advice)定义了切面是什么以及什么时候使用。   前置通知(Before):在目标方法被调用之前调用通知功能   后置通知(After):在目标方法完成之后调用通知

[原]Spring AOP 详解

亡梦爱人 提交于 2020-01-15 23:59:12
原理 AOP(Aspect Oriented Programming),也就是面向方面编程的技术。AOP基于IoC基础,是对OOP的有益补充。   AOP将应用系统分为两部分,核心业务逻辑(Core business concerns)及横向的通用逻辑,也就是所谓的方面Crosscutting enterprise concerns,例如,所有大中型应用都要涉及到的持久化管理(Persistent)、事务管理(Transaction Management)、安全管理(Security)、日志管理(Logging)和调试管理(Debugging)等。   AOP正在成为软件开发的下一个光环。使用AOP,你可以将处理aspect的代码注入主程序,通常主程序的主要目的并不在于处理这些aspect。AOP可以防止代码混乱。   Spring framework是很有前途的AOP技术。作为一种非侵略性的、轻型的AOP framework,你无需使用预编译器或其他的元标签,便可以在Java程序中使用它。这意味着开发团队里只需一人要对付AOP framework,其他人还是像往常一样编程。    AOP概念   让我们从定义一些重要的AOP概念开始。   — 方面(Aspect):一个关注点的模块化,这个关注点实现可能另外横切多个对象。事务管理是J2EE应用中一个很好的横切关注点例子

Spring 事务处理

点点圈 提交于 2020-01-15 00:49:13
前言: 事务处理的本质 在学习事务处理前,需要明确一点: 数据库操作最终都要使用到JDBC,那么无论上层如何封装,底层都是调用Connection的commit,rollback来完成 烦人的事务处理: 在日常开发中,数据访问层(DAO)必然需要进行事务的处理,但是我们会发现,事务处理的代码通常是简单的重复的,编写这样的重复代码会浪费大量的时间,所以我们需要找到一种方案可以将这些重复的代码进行抽取,以便与管理维护和复用, 我们的需求:在一系列数据库操作上的方法上增加额外的事务处理代码,让原来的方法中只关注具体的数据处理,即在原本以及存在的数据库操作方法上添加额外的事务处理逻辑 到这里你应该想到AOP了,没错! 这样的场景下AOP是最好的解决方案; 解决方案:AOP 回顾一下Spring的AOP:在结合目前的需求 1.将目标对象(DAO)放入Spring容器 2.告知Spring你的通知代码是什么(事务处理) 3.告知Spring 哪些方法(DAO的CRUD)要应用那些通知(不同的事务处理代码) 4.从Spring中获取代理对象来完成原本的CRUD,代理对象会自动完成事务处理 Spring 事务处理API Spring作为框架,需要进行详细的设计,全方位的考虑事务处理的各个方面,而不仅是简单的帮你执行commit,rollback; Spring对事务处理进行了抽象定义

Spring面试,IoC和AOP的理解

删除回忆录丶 提交于 2020-01-14 11:14:05
spring 的优点? 1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能 5.容器提供了众多的辅助类,能加快应用的开发 6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等 7.spring属于低侵入式设计,代码的污染极低 8.独立于各种应用服务器 9.spring的DI机制降低了业务对象替换的复杂性 10.Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可以自由选择spring的部分或全部 什么是DI机制? 依赖注入(Dependecy Injection)和控制反转(Inversion of Control)是同一个概念,具体的讲:当某个角色需要另外一个角色协助的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在spring中创建被调用者的工作不再由调用者来完成,因此称为控制反转。创建被调用者的工作由spring来完成,然后注入调用者 因此也称为依赖注入。 spring以动态灵活的方式来管理对象 , 注入的两种方式,设置注入和构造注入。 设置注入的优点:直观,自然 构造注入的优点:可以在构造器中决定依赖关系的顺序。 什么是AOP?

杭-Spring/Spring MVC

回眸只為那壹抹淺笑 提交于 2020-01-14 08:56:34
Spring 1、Spring是什么? Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。常见的配置方式有三种:基于XML的配置、基于注解的配置、基于Java的配置。 主要由以下几个模块组成: Spring Core:核心类库,提供IOC服务; Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等); Spring AOP:AOP服务; Spring DAO:对JDBC的抽象,简化了数据访问异常的处理; Spring ORM:对现有的ORM框架的支持; Spring Web:提供了基本的面向Web的综合特性,例如多方文件上传; Spring MVC:提供面向Web应用的Model-View-Controller实现。 2、Spring 的优点? 答:1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.Spring提供了AOP技术,支持将一些通用任务,如安全、事务、日志、权限等进行集中式管理,从而提供更好的复用。 5.容器提供了众多的辅助类,能加快应用的开发 6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA

面向切面编程(aop)

半腔热情 提交于 2020-01-14 08:53:28
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(织入)

Spring AOP 详解

∥☆過路亽.° 提交于 2020-01-14 04:47:23
原理 AOP(Aspect Oriented Programming),也就是面向方面编程的技术。AOP基于IoC基础,是对OOP的有益补充。   AOP将应用系统分为两部分,核心业务逻辑(Core business concerns)及横向的通用逻辑,也就是所谓的方面Crosscutting enterprise concerns,例如,所有大中型应用都要涉及到的持久化管理(Persistent)、事务管理(Transaction Management)、安全管理(Security)、日志管理(Logging)和调试管理(Debugging)等。   AOP正在成为软件开发的下一个光环。使用AOP,你可以将处理aspect的代码注入主程序,通常主程序的主要目的并不在于处理这些aspect。AOP可以防止代码混乱。   Spring framework是很有前途的AOP技术。作为一种非侵略性的、轻型的AOP framework,你无需使用预编译器或其他的元标签,便可以在Java程序中使用它。这意味着开发团队里只需一人要对付AOP framework,其他人还是像往常一样编程。    AOP概念   让我们从定义一些重要的AOP概念开始。   — 方面(Aspect):一个关注点的模块化,这个关注点实现可能另外横切多个对象。事务管理是J2EE应用中一个很好的横切关注点例子

Spring之AOP

此生再无相见时 提交于 2020-01-14 01:48:43
AOP概念 1 aop:面向切面(方面)编程,扩展功能不修改源代码实现 2 AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码 3 aop底层使用动态代理实现 (1)第一种情况,有接口情况,使用动态代理创建接口实现类代理对象 (2)第二种情况,没有接口情况,使用动态代理创建类的子类代理对象 AOP原理 AOP操作术语 Joinpoint(连接点): 类里面可以被增强的方法,这些方法称为连接点 Pointcut(切入点):所谓切入点是指我们要对哪些Joinpoint进行拦截的定义. Advice(通知/增强):所谓通知是指拦截到Joinpoint之后所要做的事情就是通知.通知分为前置通知,后置通知,异常通知,最终通知,环绕通知(切面要完成的功能) Aspect(切面): 是切入点和通知(引介)的结合 Introduction(引介):引介是一种特殊的通知在不修改类代码的前提下, Introduction可以在运行期为类动态地添加一些方法或Field. Target(目标对象):代理的目标对象(要增强的类) Weaving(织入):是把增强应用到目标的过程. 把advice 应用到 target的过程 Proxy(代理):一个类被AOP织入增强后,就产生一个结果代理类 Spring的aop操作 1 在spring里面进行aop操作,使用aspectj实现 (1