当前位置: 首页 > news >正文

乐清 网站建设传智播客黑马程序员

乐清 网站建设,传智播客黑马程序员,响应式外贸营销网站,网站结构分析具体分析内容切入点:要进行增强的方法 切入点表达式:要进行增强的方法的描述式 第一种方法的本质是基于接口实现的动态代理(jdk) 第二种是基于cglib实现的动态代理 AOP切入点表达式 而需要加载多个切入点时,不可能每个切入点都写一个切入点表达式 例子 下面的代理描述的是匹配…

 

切入点:要进行增强的方法

切入点表达式:要进行增强的方法的描述式

 第一种方法的本质是基于接口实现的动态代理(jdk)

 

第二种是基于cglib实现的动态代理

AOP切入点表达式

而需要加载多个切入点时,不可能每个切入点都写一个切入点表达式

例子

下面的代理描述的是匹配任意返回值的(第一个*) ,org.example包下的任意包下的任意以service结尾的类或接口下的,以find开头的任意方法,参数任意。

也就是给业务层下的所有查询方法加上AOP,比如findByid,findAll,findBy...

  @Pointcut("execution(* org.example.*.*service.find*(..))")public void pts(){}

 

AOP通知类型  

在目标对象中定义两个方法 

在通知类中定义五个方法演示上面五种通知类型

package org.example.aop;import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;@Component
@Aspect
public class MyAdvice {/*@Pointcut("execution(void org.example.dao.BookDao.save())")public void ptx(){}*/@Pointcut("execution(void org.example.dao.BookDao.update())")public void pt(){}@Pointcut("execution(int org.example.dao.BookDao.select())")public void pts(){}/*  @Before("pt()")public void before(){System.out.println("before advice...");}*//*  @After("pt()")public void after(){System.out.println("after advice...");}*/
/*    @Around("pts()")public Object around(ProceedingJoinPoint pjp) throws Throwable {System.out.println("before advice...");Object ret= pjp.proceed();System.out.println("after advice...");return ret;}*//*    @AfterReturning("pts()")public void afterReturning(){System.out.println("afterReturning advice...");}*/@AfterThrowing("pts()")public void afterThrowing(){System.out.println("afterThrowing advice...");}
}

 前置通知:

后置通知: 

 

环绕通知(无返回值):

原始方法的输出直接被吞了

 在这个通知中需要告诉它原始操作需要放在哪个位置,下面的pjp.proceed()表示的就是对原始操作的调用。需要抛出一个异常

@Around("pt()")public void around(ProceedingJoinPoint pjp) throws Throwable {System.out.println("before advice...");pjp.proceed();System.out.println("after advice...");}

 环绕通知(有返回值):

使用如图的环绕通知调用一个有返回值的方式时会报错。

 

原因是环绕通知的方法也要有返回值,但是返回值类型应该写Object,因为不能确定所有的原始方法返回值相同。

在下面的环绕通知中,原始方法的reutrn被拦截了,需要这个通知再进行return

 上面这个才是标准写法,不管返回值是不是void

返回后通知:

和上面的后置通知很像,但是这个是在返回之后才通知,如何在返回前有个异常导致没有正常返回就不会执行通知,比如在select()中 

输出如下 

 异常后通知:

只会在抛出异常后运行,还是上面的1/0,输出如下

 

 

http://www.yayakq.cn/news/219344/

相关文章:

  • 2017年网站建设工作总结在internet上建设网站可选择
  • 如何管理建好的网站免费企业黄页下载
  • 网站防黑客入侵做相关防御网站开发一对一
  • 创建wordpress网站建设网站都需投入哪些资源
  • 用html编写淘宝网站怎么做灰色网站设计
  • 网站开发设做废品回收在什么网站推广
  • 网站优化排名软件哪些最好七层网络架构
  • 国内最大设计网站比较好网站制作公司
  • 广州 网站 设计云南省省建设厅网站
  • 中国建行网站天津市建设工程管理信息网
  • 现在pc网站的标准一般是做多大专业做面膜的网站
  • 北京网站建设排名请说明网站建设的一般过程包括哪些
  • 大型网站建设兴田德润专业自响应式网站是什么意思
  • 自己如何创建网站四川招标采购交易信息网
  • 中国城乡住房和建设部网站全国文明城市创建内容
  • 中国贸易网是什么网站响应式网站有什么好处
  • 焦作企业网站建设商标图案设计创意
  • 网站网站弹出窗口去掉国内最大的网站建设公司
  • 河南 网站建设哪里做网站需求
  • 网站建设和管理专业网站建设费摊多久
  • dw 做静态网站装门做特卖的网站
  • 定制柜设计网站小程序排名帝搜软件sem880官网
  • 德州宁津网站建设手机百度2020最新版
  • 太原网站建设包括什么wordpress容易被黑么
  • 网站建设中怎么添加源码摄影图片素材网站
  • 视频网站切片怎么做我做的网站怎样被百度收录
  • 智能响应式网站建设网页设计师作品集
  • 网站开发中的抓包工具推广普通话宣传内容
  • 河南零距离文化传播 网站建设前端开发工作内容
  • 要建设一个网站需要什么怎么用FTP做网站