手动实现aop编程
手动实现aop编程(运用代理模式实现)
aop:aspect object programming
功能:让关注点与业务代码分离
关注点:重复代码就叫做关注点
切面:关注点形成的类,就叫切面(类)
面向切面编程,就是只对功能都有的重复的代码抽取,在在运行的时候动态植入“切面类代码“
切入点:执行目标对象方法,动态植入切面代码
可以通过切入点表达式,指定拦截哪些类的哪些方法给指定的类在运行的时候植入切面类代码
注解实现aop编程
第一步:引入jar包
第二部引入名称空间
第三部:开启aop注解扫描 <aop:aspectj-autoproxy></aop:aspectj-autoproxy>(注解扫描是<context:component-scan base-package="包名+类名"></....>)
@aspect //指定当前类为切面类
@before (“execute(* 包名+类名+方法名(..))”) 类如:("execute(* liYaBin.proxy.UserDao.save(..)") // ..为方法里面的参数 before为在执行目标方法之前执行
@after(切入点表单式)
//优化
@pointcut(切入点表单式)
public void testPoint_(){
}
@before("testPont_")
@after("testPoint_")
目标对象有实现接口,spring会自动选择使用动态代理,相反则会选择使用cglib代理
包名或方法名可以用*代理 代表为全部
其他注解
@AfterReturning("testPoint") //调用目标方法之后运行
@AfterThrowing() //当目标方法出现错误时运行
但是After不管是否出现异常都会执行而AfterThrow在有异常是不会执行
@around(“testPoint”)//环绕部标方法执行
public voidaround(ProceedingJoinPoint pjp)throws Throwable{
system.out.print(""); /* 环绕相当于before和after
pjp.proceed();
system.out.print(""); */
}
手动实现aop编程的更多相关文章
- Spring第五篇【cglib、手动实现AOP编程】
前言 到目前为止,已经简单学习了Spring的Core模块.也会怎么与Struts2框架进行整合了-.于是我们就开启了Spring的AOP模块了-在讲解AOP模块之前,首先我们来讲解一下cglib代理 ...
- Spring框架--AOP编程
2 手动实现AOP编程 AOP 面向切面的编程, AOP可以实现"业务代码"与"关注点代码"分离 // 保存一个用户 public void add(User ...
- Spring的AOP编程
1.手动实现AOP编程(代理模式) AOP是面向切面的编程,主要功能就是实现"业务代码"和辅助业务代码的"关注点代码"分离.在一个方法中,出了核心的业务代码,其 ...
- Spring之AOP编程
一.AOP简介 AOP的英文全称是Aspect Oriented Programming,意为:面向切面编程. AOP采取横向抽取的机制,取代了传统纵向继承体系的代码复用.AOP常用于 ...
- 设计模式(四) 手动实现AOP代理
1.事务的使用: 每次对数据库操作我们都需要开启事务,事务开启后,我们就需要对数据库进行一次或者多次操作,当操作完成后就需要提交事务.比如一个业务中多次操作数据库,但是当某个方法出错的时候,我们需要整 ...
- Spring AOP编程(二)-AOP实现的三种方式
AOP的实现有三种方式: l aop底层将采用代理机制进行实现. l 接口 + 实现类 :spring采用 jdk 的动态代理Proxy. l 实现类: ...
- spring的aop编程(半自动、全自动)
1.spring的半自动代理(从spring中获取代理对象) (1)spring中的通知类型 spring中aop的通知类型有五种: 前置:在目标方法执行前实施加强 后置:在目标方法执行后实施加强 环 ...
- 【原】iOS动态性(三) Method Swizzling以及AOP编程:在运行时进行代码注入
概述 今天我们主要讨论iOS runtime中的一种黑色技术,称为Method Swizzling.字面上理解Method Swizzling可能比较晦涩难懂,毕竟不是中文,不过你可以理解为“移花接木 ...
- 使用spring方式来实现aop编程
1:什么是aop? Aspect Oriented Programming 面向切面编程 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译 ...
随机推荐
- 修改电脑名称后,Oracle客户端连不上
有以下几个步骤可以尝试,帮助大家缩小错误范围. 1 命令窗口使用sqlplus查看数据库服务是否正常,如下图,没有出现“连接到:”表示数据库服务不正常. 2 在任务管理器中查看数据库的监听是否已经 ...
- btrfs
https://docs.docker.com/storage/storagedriver/btrfs-driver/ $ sudo cat /proc/filesystems | grep btrf ...
- mongodb-主从复制
1 主从复制: 一个概念,在sqlserver或者说是mysql也有 2 主从复制解决了哪些问题??? 读写压力:以前是一个mongodb去承载海量的读和写,这样的话终有瓶颈的.使用一主多从, 从服务 ...
- js面向对象 多种创建对象方法小结
转自js面向对象 多种创建对象方法小结 1.对象字面量 var clock={ hour:12, minute:10, second:10, showTime:function(){ alert(th ...
- android 集成支付宝app支付(原生态)-包括android前端与java后台
本文讲解了 android开发的原生态app集成了支付宝支付, 还提供了java后台服务器处理支付宝支付的加密代码, app前端与java后台服务器使用json数据格式交互信息,java后台服务主要用 ...
- 全栈JavaScript之路( 二十 )HTML5 插入 html标记 ( 二 )insertAdjacentHTML
insertAdjacentHTML(), 这种方法也是在IE中最早出现的.如今已纳入html5规范,它接受两个參数,一个是下列的标记之中的一个,一个是要写入的 html 代码文本. beforeb ...
- 单片机小白学步系列(十四) 点亮第一个LED的程序分析
本篇我们将分析上一篇所写的程序代码.未来学习单片机的大部分精力,我们也将放在程序代码的编写上. 可是不用操心.我会很具体的介绍每一个程序的编写思路和各种注意事项等. 之前我们写的程序例如以下: #in ...
- HDU3496 Watch the Movie 背包
题目大意:给你n张电影门票,但一次只可以买m张,并且你最多可以看L分钟,接下来是n场电影,每一场电影a分钟,b价值,要求恰好看m场电影所得到的最大价值,要是看不到m场电影,输出0. 三个限制: 选电影 ...
- Java Colections 集合类 —— List、ArrayList、Set(HashSet)
0. List<T> 是一个接口 该接口定义的高级成员函数有: contains() ⇒ 是否包含: String[] people; List names = Arrays.asList ...
- js 对象方法、类方法、原型方法区别
function People(name){this.name=name;//对象方法this.Introduce=function(){alert("My name is "+t ...