aop

Spring aop学习整理(spring in action)(一):了解AOP

时间秒杀一切 提交于 2020-01-18 13:37:47
  切面能帮助我们模块化横切关注点。简而言之,横切关注点可以被描述为影响应用多处的功能。例如,安全就是一个横切关注点,应用中的许多方法都会涉及到安全规则。图4.1直观呈现了横切关注点的概念。      图4.1展现了一个被划分为模块的典型应用。每个模块的核心功能都是为特定业务领域提供服务,但是这些模块都需要类似的辅助功能,例如安全和事务管理。如果要重用通用功能的话,最常见的面向对象技术是继承(inheritance)或委托(delegation)。但是,如果在整个应用中都使用相同的基类,继承往往会导致一个脆弱的对象体系;而使用委托可能需要对委托对象进行复杂的调用。切面提供了取代继承和委托的另一种可选方案,而且在很多场景下更清晰简洁。在使用面向切面编程时,我们仍然在一个地方定义通用功能,但是可以通过声明的方式定义这个功能要以何种方式在何处应用,而无需修改受影响的类。横切关注点可以被模块化为特殊的类,这些类被称为切面(aspect)。这样做有两个好处:首先,现在每个关注点都集中于一个地方,而不是分散到多处代码中;其次,服务模块更简洁,因为它们只包含主要关注点(或核心功能)的代码,而次要关注点的代码被转移到切面中了。   AOP术语:   与大多数技术一样,AOP已经形成了自己的术语。描述切面的常用术语有通知(advice)、切点(pointcut)和连接点(join point)。图4

spring第四章-AOP

三世轮回 提交于 2020-01-18 04:32:28
文章目录 spring第四章-AOP 一、目标 二、jdbcTemplate的使用 1、jdbcTemplate的介绍 2、数据源配置 3、jdbcTemplate的CRUD 4、在dao中使用jdbcTemplate方法一 5、在dao中使用jdbcTemplate方法二 三、spring的事务控制 1、spring事务控制的api介绍--事务管理类 2、事务的特性 3、事务的传播 4、是否为只读的事务 5、基于xml声明式事务管理(配置文件)(重点)(推荐) 6、基于注解的配置(重点) spring第四章-AOP 一、目标 1、jdbcTemplate的使用 2、spring的事务控制 3、了解spring5的新特性 二、jdbcTemplate的使用 1、jdbcTemplate的介绍 jdbc --- dbutils -- jdbcTemplate(spring 提供) -- mybatis(主流) -- spring data jpa(趋势) 2、数据源配置 a. c3p0数据源 <!--c3p0数据源--> < dependency > < groupId > c3p0 </ groupId > < artifactId > c3p0 </ artifactId > < version > 0.9.1.2 </ version > </ dependency > <!-

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 Day03 AOP

只愿长相守 提交于 2020-01-18 02:10:10
1.Spring 的 AOP 简介 1.1 什么是 AOP AOP 为 Aspect Oriented Programming 的缩写,意思为面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。 AOP 是 OOP 的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。 1.2 AOP 的作用及其优势 作用:在程序运行期间,在不修改源码的情况下对方法进行功能增强 优势:减少重复代码,提高开发效率,并且便于维护 1.3 AOP 的底层实现 实际上,AOP 的底层是通过 Spring 提供的的动态代理技术实现的。在运行期间,Spring通过动态代理技术动态的生成代理对象,代理对象方法执行时进行增强功能的介入,在去调用目标对象的方法,从而完成功能的增强。 1.4 AOP 的动态代理技术 常用的动态代理技术 JDK 代理 : 基于接口的动态代理技术 cglib 代理:基于父类的动态代理技术 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GID0L2KN-1578710358957)(img\图片1.png)] 1.5 JDK 的动态代理 ①目标类接口 public

spring总结-----Spring AOP

纵饮孤独 提交于 2020-01-18 00:59:18
什么是AOP aop(Aspect-Oriented Programming), 即 面向切面编程 , 它与 OOP( Object-Oriented Programming, 面向对象编程) 相辅相成, 提供了与 OOP 不同的抽象软件结构的视角. 在 OOP 中, 我们以类(class)作为我们的基本单元, 而 AOP 中的基本单元是 Aspect(切面) 术语 Aspect(切面) aspect 由 point cut 和 advice 组成,它既包含了横切逻辑的定义, 也包括了连接点(join point )的定义. Spring AOP就是负责实施切面的框架, 它将切面所定义的横切逻辑织入到切面所指定的连接点中. AOP的工作重心在于如何将增 强( advice )织入目标对象Target的连接点上, 这里包含两个工作: 如何通过 pointcut 和 advice 定位到特定的 joinpoint 上 如何在 advice 中编写切面代码. 可以简单地认为, 使用 @Aspect 注解的类就是切面, 满足 pointcut 规则的 joinpoint 会被添加相应的 advice 操作. advice(增强) 由 aspect 添加到特定的 join point(即满足 point cut 规则的 join point) 的一段代码. 许多 AOP框架, 包括

SpringBoot中AOP的使用方式

烂漫一生 提交于 2020-01-18 00:00:00
1、什么是AOP AOP(Aspect-OrientedProgramming,面向切面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。对于其他类型的代码,如安全性、异常处理和透明的持续性也是如此。这种散布在各处的无关的代码被称为横切(cross-cutting)代码,在OOP设计中,它导致了大量代码的重复,而不利于各个模块的重用。而AOP技术则恰恰相反,它利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为“Aspect”,即方面。所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。AOP代表的是一个横向的关系,如果说“对象”是一个空心的圆柱体,其中封装的是对象的属性和行为;那么面向方面编程的方法,就仿佛一把利刃,将这些空心圆柱体剖开

AspectJ - Load-time weaving, privileged aspect and pointcut on private method of JRE class

老子叫甜甜 提交于 2020-01-17 09:29:46
问题 I'm trying to set pointcut on private method java.net.AbstractSocketImpl.connectToAddress(..) and I want to use load-time weaving. This is my test code: public class Main { public static void main(String args[]) throws Throwable { new java.net.Socket("localhost", 10111); } } and this is my privileged aspect: privileged aspect PrivAspect { before() : call(* java.net.AbstractPlainSocketImpl.connectToAddress(..)) { System.out.println("It works"); } } and this is META-INF/aop.xml <aspectj>

Spring中的Aop的理解

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

AspectJ pointcuts and advice

我的梦境 提交于 2020-01-17 03:16:04
问题 I have to enforce a policy issuing a warning if items not belonging to a particular category are being added, apart from the three which are allowed and disallowing such additions..... So far i am able to find the items and issue warning.... but not sure how to stop them from being added.... For Eg. Allowed categories Shoes and socks but if i try and add a vegetable item to the inventory it should give me a warning saying "category not allowed../nItem will not be added to inventory"..... and

ActiveMQ

穿精又带淫゛_ 提交于 2020-01-16 23:19:14
一、什么是消息中间件   消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。对于消息中间件,常见的角色大致也就有Producer(生产者)、Consumer(消费者)   常见的消息中间件产品: ( 1 ) ActiveMQ   ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现 ,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。   主要特点:   1. 多种语言和协议编写客户端。语言: Java, C, C++, C#, Ruby, Perl, Python, PHP。应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP   2. 完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务)   3. 对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性   4. 通过了常见J2EE服务器(如 Geronimo,JBoss 4, GlassFish,WebLogic)的测试