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

做网站就用建站之星延安软件开发公司

做网站就用建站之星,延安软件开发公司,游戏推广公司,wordpress 顶部图像一、 AOP的基本概念 Aspect(切面): 其实就是我们定义的切面类,里面可以定义切入点表达式和前后通知Pointcut(切点):就是带有通知的连接点,在程序中主要体现为书写切入点表达式JointPoint(连接点):程序执行过程中被切面拦截的点,这个点可以是方…

一、 AOP的基本概念

  1. Aspect(切面): 其实就是我们定义的切面类,里面可以定义切入点表达式和前后通知
  2. Pointcut(切点):就是带有通知的连接点,在程序中主要体现为书写切入点表达式
  3. JointPoint(连接点):程序执行过程中被切面拦截的点,这个点可以是方法也可以是类
  4. Advice(通知):AOP在特定的切入点上执行的增强处理:before,after,afterReturning,afterThrowing,around
  5. AOP代理:AOP框架创建的对象,代理就是目标对象的加强。Spring中的AOP代理可以使JDK动态代理,也可以是CGLIB代理,前者基于接口,后者基于子类

切面 = 切点+通知

连接点和切入点的区别:

Jointpoint(连接点) 是具体的某个目标方法
Pointcut(切入点) 用于指定 “连接点” 的一个表达式

通知类型

  1. Before:在目标方法被调用之前做增强处理
  2. AfterReturning:在目标方法正常完成后做增强,@AfterReturning除了可以写切入点表达式,还可以指定一个返回值形参名returning,代表目标方法的返回值
  3. AfterThrowing:主要用来处理程序中未处理的异常,@AfterThrowing除了可以写切入点表达式外,还可以指定一个throwing的返回值形参名,可以通过该形参名来访问目标方法中所抛出的异常对象
  4. After:在目标方法完成之后做增强,无论目标方法是否成功完成。@After可以指定一个切入点表达式
  5. Around:环绕通知,在目标方法完成前后做增强处理,环绕通知是最重要的通知类型,像事务,日志等都是环绕通知,注意编程中核心是一个ProceedingJoinPoint

二、使用案例

引入jar

<dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId>
</dependency>
<dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId>
</dependency>
@EnableAspectJAutoProxy
@Component
@Aspect
public class Operator { //切面类,对应概念里面的Aspect@Pointcut("execution(* ...service.*)")  //切点,对应概念里面的Pointcutpublic void pointCut(){//配置切点}@Before("pointCut()")   //切点,对应概念里面的Pointcutpublic void doBefore(JoinPoint joinPoint){//通知-在目标方法被调用之前做增强处理}@After("pointCut()")public void doAfter(JoinPoint joinPoint){//通知-在目标方法完成之后做增强}@AfterReturning(pointcut="pointCut()",returning="returnVal")public void afterReturn(JoinPoint joinPoint,Object returnVal){//通知-在目标方法正常完成后做增强}@AfterThrowing(pointcut="pointCut()",throwing="error")public void afterThrowing(JoinPoint joinPoint,Throwable error){//通知-主要用来处理程序中未处理的异常}@Around("pointCut()")public void around(ProceedingJoinPoint pjp){//通知-环绕通知,在目标方法完成前后做增强处理,环绕通知是最重要的通知类型,像事务,日志等都是环绕通知System.out.println("AOP Aronud before...");pjp.proceed();//执行目标方法System.out.println("AOP Aronud after...");}
}

三、 编码式实现切面

spring aop常用的就是下面几个注解

  1. @Aspect 标注增强处理类(切面)
  2. @Pointcut 自定义切点位置
  3. @Around 定义增强,环绕通知处理

下面使用编码式如何去实现一个切面

1、定义一个需要被切面处理方法
public class TestMethod {public void test(){System.out.println("测试方法");}
}
2、定义通知方法相当于@Around
@Component
public class TestMethodInterceptor implements MethodInterceptor {@Overridepublic Object invoke(MethodInvocation methodInvocation) throws Throwable {System.out.println("方法调用前");Object proceed = methodInvocation.proceed();System.out.println("方法调用后");return proceed;}
}
3、定义切面编程
public static void main(String[] args) {TestMethod delegate = new TestMethod();//目标TestMethodInterceptor interceptor = new TestMethodInterceptor();//准备通知JdkRegexpMethodPointcut pointcut = new JdkRegexpMethodPointcut ();pointcut.setPattern("com.example.demo.TestMethod.*");//定义切点//切面=切点+通知Advisor advisor = new DefaultPointcutAdvisor(pointcut, interceptor);//创建一个代理工厂ProxyFactory factory = new ProxyFactory();factory.addAdvisor(advisor);//给代理工厂一个切面factory.setTarget(delegate);//需要被代理的对象TestMethod proxy = (TestMethod) factory.getProxy();proxy.test();
}
4、输出:
方法调用前
测试方法
方法调用后
http://www.yayakq.cn/news/465522/

相关文章:

  • 行业网站制作wordpress硬件接口
  • 郑州 网站 公司那些网站布局好看
  • 淘宝可做的团购网站郑州 中原区
  • 做seo网站的公司哪家好安装网站模版视频
  • 提高网站的权重的最佳方法站长素材官网
  • 阿里云建站wordpressdede手机网站教程
  • 微信做引流网站小程序制作软件有哪些
  • wordpress 主题 字体关键词优化难易
  • 个体户 建设网站网站流量统计查询
  • 网站建设dns解析设置旅游网站的网页设计素材
  • 湖北建设厅网站上查询长治做网站哪家好
  • 上海市建设工程材料网站杭州有哪些网络公司
  • 淄博网站制作企业高端网站建设需求范本
  • 网站积分商城该怎么建立免费网站软件下载大全动漫
  • 简述新建站点的步骤密云微网站建设
  • 猪八戒网站 怎么做兼职团队拓展训练
  • 免费建商城网站哪个好重庆做网站公司有哪些
  • 厦门人才网唯一官方网站中国住房城乡建设部网站
  • 建设银行网站名称怎么写网站你懂我意思正能量免费下载
  • 备案网站名称更改WordPress主题使用域名加密
  • 企业官方网站怎么建设门户网站导航建设方案
  • 为什么网站建设要值班WordPress wp-cache
  • 自己做的网站 jen彩票网站开发合法吗
  • 镇江网站建设方式优化浙江省工程造价信息网
  • 惠安县住房和城乡建设局网站网站建设的感想和建议
  • 网站多久会被百度收录移动积分兑换商城官方网站
  • 建行个人余额查询网站排版设计教程入门初学者
  • 中国建设银行网站查询余额网站出现搜索
  • 六安网站建设企业网络科技公司网站建设策划
  • 重庆手机网站开发wordpress 用什么服务器配置