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

网站建设设计流程图模拟手机营销网站

网站建设设计流程图,模拟手机营销网站,做微网站是订阅号还是服务号号,微信公众号怎么做网站链接面向切面编程,面向特定方法编程,以方法为对象,在不修改原方法的基础上,对方法进行操作扩展等,底层是通过动态代理实现的 使用开发步骤: 1、创建一个类,加上Aspect声明为一个AOP切面类&#xff…

面向切面编程,面向特定方法编程,以方法为对象,在不修改原方法的基础上,对方法进行操作扩展等,底层是通过动态代理实现的

使用开发步骤:

1、创建一个类,加上@Aspect声明为一个AOP切面类,再加上@Component交给IOC容器来管理

2、定义方法

3、方法上加上通知类型注解,注解内使用切入点表达式,指定要被代理的方法路径以及返回值类型 ,重点掌握 @Around环绕通知

execution切入点表达式:
execution(访问修饰符? 返回值类型 包名.类名? .方法名(方法参数的类型) throws 异常?)

如:

@Around("execution(* com.cxl.service.*.*(..))")

带?表示可以省略的部分, *为通配符,单个独立的任意符号 ..为多个连续的任意符号,此处表示方法的形参类型和个数是任意的,也可以表示任意层级 根据业务需要可以使用&& || !来组合复杂的切入点表达式

@annotation切入点表达式: 用于 匹配标识有特定注解的方法
@annotation(注解全类名)
@Around("@annotation(com.itheima.anno.Log)") //匹配标识有Log注解的方法,com.itheima.anno.Log为注解的全类名


**连接点:JoinPoint**,可以被AOP控制的方法(暗含方法执行时的相关信息)
**通知:Advice**,指那些重复的逻辑,也就是共性功能(最终体现为一个方法,如下方统计方法的耗时的方法)
**切入点:PointCut**,匹配连接点的条件,通知仅会在切入点方法执行时被应用
**切面:Aspect**,描述通知与切入点的对应关系(通知+切入点)
**目标对象:Target**,通知所应用的对象

在这里插入图片描述
注意事项:

1、@Around环绕通知需要自己调用ProceedingJoinPoint.proceed()来让原始方法执行,其他通知不需要考虑目标方法执行

2、@Around环绕通知方法的返回值,必须指定Object,来接收原始方法的返回值

3、在Spring中用JoinPoint抽象了连接点,用它可以获得方法执行时的相关信息,如目标类名、方法名、方法参数等。
对于@Around通知,获取连接点信息只能使用ProceedingJoinPoint
对于其他四种通知,只能使用JoinPoint,它是ProceedingJoinPoint的父类型

具体代码示例如下:

@Slf4j
@Component
@Aspect
public class TimeAspect {@Around环绕通知,切入点表达式@Around("execution(* com.cxl.service.*.*(..))")public Object recordTime(ProceedingJoinPoint joinPoint) throws Throwable {long start = System.currentTimeMillis();Object result = joinPoint.proceed();//调用原方法long end = System.currentTimeMillis();log.info(joinPoint.getSignature()+"方法执行耗时:{}毫秒",end-start);return result;}@After("execution(* com.cxl.service.DeptServiceImpl.*(..))")public void after(JoinPoint point){//1、获取目标对象的类名String className = point.getTarget().getClass().getName();//2、获取目标方法的方法名String methodName = point.getSignature().getName();//3、获取目标方法运行时传入的参数Object[] = point.getArgs();//4、放行 目标方法运行//5、获取目标方法运行的返回值Object result = point.proceed();log.info("after...");}
}

当切入点表达式都相同时,每个方法都写一遍太繁琐,可以使用
@PointCut注解
1、声明一个无意义方法,在此方法上加上
@PointCut注解,注解内填上重复的切入点表达式

2、其他需要使用该切入点表达式的方法在通知类型注解内填上该无意义方法的方法名()即可,其他切面类也可以用,与权限修饰符相对应,public,private

代码示例:

@Slf4j
@Component
@Aspect
public class TimeAspect {@Pointcut("execution(* com.cxl.service.DeptServiceImpl.*(..))")public void poinCut(){}@Around("poinCut()")public Object recordTime(ProceedingJoinPoint joinPoint) throws Throwable {long start = System.currentTimeMillis();Object result = joinPoint.proceed();long end = System.currentTimeMillis();log.info(joinPoint.getSignature()+"方法执行耗时:{}毫秒",end-start);return result;}@AfterReturning("poinCut()")public void afterReturning(){log.info("afterReturning...");}@AfterThrowing("poinCut()")public void afterThrowing(){log.info("afterThrowing...");}@Before("poinCut()")public void before(){log.info("before...");}@After("poinCut()")public void after(){log.info("after...");}
}

通知执行顺序

当有多个切面的切入点都匹配到了目标方法,目标方法运行时,多个通知方法都会被执行

执行顺序是按照切面类类名的字母排序来执行的

目标方法的通知方法:字母排名靠的先执行
目标方法的通知方法:字母排名靠的先执行


可以用 @Order注解加在切面类上来控制执行顺序

@Order(数字)

目标方法的通知方法:数字的先执行
目标方法的通知方法:数字的先执行

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

相关文章:

  • 公司建设网站方案南京地区网站开发
  • 中国建筑装饰装修网短视频seo优化排名
  • 设计资料网站青鸟网站开发实例
  • 手机网站 禁止缩放wordpress的书
  • 小学网站建设与管理办法为什么做彩票网站会被提示危险
  • 泉州网站建设手机郑州网站建设 58
  • 网站开发计入什么科目微信如何自己开发小程序
  • 全球访问量最大的网站排名rio门户网站的制作
  • 作风建设 宣讲家网站积分交易网站开发
  • 中国建筑设计作品网站做网站学h5还是php
  • 申请网站空间就是申请域名手机应用商店免费下载
  • 新发布一个网站公告怎么做新品发布会策划流程
  • 大连模板建站定制网络平台怎么搭建网站
  • 公司注销网站备案上传了网站标志怎么弄
  • 做网站用什么浏览器去空格网站
  • kuake自助建站系统源码做直播网站
  • 百度网站排名全掉创建企业网站的步骤
  • 做网站的前端是做什么公司网站建设7个基本流程
  • 四川通管局网站企业邮箱注册申请163免费
  • 网站ui案例服装设计公司有什么职位
  • 深圳网站建设公司pestl分析国家城乡和住房建设部网站首页
  • 做网站意义和目的合肥前端开发培训机构
  • 深圳响应式建站备案号怎么放到网站
  • 高校校园网站建设培训班thinkphp 网站设置功能
  • 找在家做的兼职上什么网站好昆明房产信息网
  • 分类信息网站开发教程网站需求分析报告
  • 那些网站主做玄幻小说企业网络推广情况介绍
  • 苏州定制建站网站建设猪八戒网logo设计
  • wordpress更改域名网页走失东莞网站优化找哪家
  • 网站推广策划方案模板网络推广员的前景