当前位置: 首页 > news >正文 怎样做网站的优化、排名理卖做各视频网站的会员 news 2025/10/28 17:50:33 怎样做网站的优化、排名,理卖做各视频网站的会员,做ui设计工资一般多少,网站开发与restAOP是Spring框架的核心之一#xff0c;那什么是AOP#xff1f;AOP#xff1a;Aspect Oriented Programming#xff08;面向切面编程、面向方面编程#xff09;#xff0c;其实说白了#xff0c;面向切面编程就是面向特定方法编程。AOP是一种思想#xff0c;而在Spring框…AOP是Spring框架的核心之一那什么是AOPAOPAspect Oriented Programming面向切面编程、面向方面编程其实说白了面向切面编程就是面向特定方法编程。AOP是一种思想而在Spring框架中对这种思想进行了实现那我们要学习的就是Spring AOP。 如何实现AOP开发 案例 统计部门管理各个业务层方法执行耗时。在原始的实现方式中我们需要在业务层的也一个方法执行执行获取方法运行的开始时间 然后运行原始的方法逻辑 最后在每一个方法运行结束时获取方法运行结束时间计算执行耗时。 AOP实现步骤 1、导入依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactId /dependency 2、编写AOP程序针对于特定方法根据业务需要进行编程 Component Aspect //当前类为切面类 Slf4j public class RecordTimeAspect {Around(execution(* com.itheima.service.impl.DeptServiceImpl.*(..)))public Object recordTime(ProceedingJoinPoint pjp) throws Throwable {//记录方法执行开始时间long begin System.currentTimeMillis();//执行原始方法Object result pjp.proceed();//记录方法执行结束时间long end System.currentTimeMillis();//计算方法执行耗时log.info(方法执行耗时: {}毫秒,end-begin);return result;} } 应用场景 AOP的应用场景有很多 记录系统的操作日志 权限控制 事务管理Spring事务管理底层其实也是通过AOP来实现的只要添加Transactional注解之后AOP程序自动会在原始方法运行前先来开启事务在原始方法运行完毕之后提交或回滚事务 优势 代码无侵入没有修改原始的业务方法就已经对原始的业务方法进行了功能的增强或者是功能的改变 减少了重复代码 提高开发效率 维护方便 AOP中的核心概念 连接点JoinPoint可以被AOP控制的方法暗含方法执行时的相关信息。连接点指的是可以被aop控制的方法。SpringAOP提供的JoinPoint当中封装了连接点方法在执行时的相关信息。 通知Advice指哪些重复的逻辑也就是共性功能最终体现为一个方法。在AOP面向切面编程当中我们只需要将这部分重复的代码逻辑抽取出来单独定义。抽取出来的这一部分重复的逻辑也就是共性的功能。 切入点PointCut匹配连接点的条件通知仅会在切入点方法执行时被应用。切入点指的是匹配连接点的条件。通知仅会在切入点方法运行时才会被应用。在aop的开发当中我们通常会通过一个切入点表达式来描述切入点 切面Aspect描述通知与切入点的对应关系通知切入点当通知和切入点结合在一起就形成了一个切面。通过切面就能够描述当前aop程序需要针对于哪个原始方法在什么时候执行什么样的操作。 目标对象Target通知所应用的对象。目标对象指的就是通知所应用的对象我们就称之为目标对象。 SpringAOP 旨在管理bean对象的过程中主要通过底层的动态代理机制对特定的方法进行编程 。 AOP进阶 AOP的基础知识学习完之后下面我们对AOP当中的各个细节进行详细的学习。主要分为3个部分 通知类型 通知顺序 切入点表达式 通知类型 Spring AOP 通知类型 Around 环绕通知此注解标注的通知方法在目标方法前、后都被执行 Before 前置通知此注解标注的通知方法在目标方法前被执行 After 后置通知此注解标注的通知方法在目标方法后被执行无论是否有异常都会执行 AfterReturning 返回后通知此注解标注的通知方法在目标方法后被执行有异常不会执行 AfterThrowing 异常后通知此注解标注的通知方法发生异常后执行 //前置通知 Before(execution(* com.itheima.service.*.*(..)))//环绕通知 Around(execution(* com.itheima.service.*.*(..)))//后置通知 After(execution(* com.itheima.service.*.*(..)))//返回后通知程序在正常执行的情况下会执行的后置通知 AfterReturning(execution(* com.itheima.service.*.*(..)))//异常通知程序在出现异常的情况下执行的后置通知 AfterThrowing(execution(* com.itheima.service.*.*(..))) 在使用通知时的注意事项 Around环绕通知需要自己调用 ProceedingJoinPoint.proceed() 来让原始方法执行其他通知不需要考虑目标方法执行 Around环绕通知方法的返回值必须指定为Object来接收原始方法的返回值否则原始方法执行完毕是获取不到返回值的。 Spring提供了PointCut注解该注解的作用是将公共的切入点表达式抽取出来需要用到时引用该切入点表达式即可 举例 Slf4j Component Aspect public class MyAspect1 {//切入点方法公共的切入点表达式Pointcut(execution(* com.itheima.service.*.*(..)))private void pt(){}//前置通知引用切入点Before(pt())public void before(JoinPoint joinPoint){log.info(before ...);}//环绕通知Around(pt())public Object around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {log.info(around before ...);//调用目标对象的原始方法执行Object result proceedingJoinPoint.proceed();//原始方法在执行时发生异常//后续代码不在执行log.info(around after ...);return result;}//后置通知After(pt())public void after(JoinPoint joinPoint){log.info(after ...);}//返回后通知程序在正常执行的情况下会执行的后置通知AfterReturning(pt())public void afterReturning(JoinPoint joinPoint){log.info(afterReturning ...);}//异常通知程序在出现异常的情况下执行的后置通知AfterThrowing(pt())public void afterThrowing(JoinPoint joinPoint){log.info(afterThrowing ...);} } 通知顺序 默认按照切面类的类名字母排序 目标方法前的通知方法字母排名靠前的先执行 目标方法后的通知方法字母排名靠前的后执行 如果我们想控制通知的执行顺序有两种方式 修改切面类的类名这种方式非常繁琐、而且不便管理 使用Spring提供的Order注解 切面类的执行顺序前置通知数字越小先执行; 后置通知数字越小越后执行 切入点表达式 切入点表达式描述切入点方法的一种表达式主要用来决定项目中的哪些方法需要加入通知 常见形式 execution(……)根据方法的签名来匹配 annotation(……) 根据注解匹配 execution execution主要根据方法的返回值、包名、类名、方法名、方法参数等信息来匹配语法为下。其中带?的表示可以省略的部分 execution(访问修饰符? 返回值 包名.类名.?方法名(方法参数) throws 异常?) 可以使用通配符描述切入点 * 单个独立的任意符号可以通配任意返回值、包名、类名、方法名、任意类型的一个参数也可以通配包、类、方法名的一部分 .. 多个连续的任意符号可以通配任意层级的包或任意类型、任意个数的参数 切入点表达式的语法规则 方法的访问修饰符可以省略 返回值可以使用*号代替任意返回值类型 包名可以使用*号代替代表任意包一层包使用一个* 使用..配置包名标识此包以及此包下的所有子包 类名可以使用*号代替标识任意类 方法名可以使用*号代替表示任意方法 可以使用 * 配置参数一个任意类型的参数 可以使用.. 配置参数任意个任意类型的参数 annotation 如果我们要匹配多个无规则的方法比如list()和 delete()这两个方法。这个时候我们基于execution这种切入点表达式来描述就不是很方便了。而在之前我们是将两个切入点表达式组合在了一起完成的需求这个是比较繁琐的。 我们可以借助于另一种切入点表达式 annotation 来描述这一类的切入点从而来简化切入点表达式的书写。 实现步骤 编写自定义注解 在业务类要做为连接点的方法上添加自定义注解 举例 Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) public interface LogOperation{ } Slf4j Component Aspect public class MyAspect6 {//针对list方法、delete方法进行前置通知和后置通知//前置通知Before(annotation(com.itheima.anno.LogOperation))public void before(){log.info(MyAspect6 - before ...);}//后置通知After(annotation(com.itheima.anno.LogOperation))public void after(){log.info(MyAspect6 - after ...);} } execution切入点表达式 根据我们所指定的方法的描述信息来匹配切入点方法这种方式也是最为常用的一种方式 如果我们要匹配的切入点方法的方法名不规则或者有一些比较特殊的需求通过execution切入点表达式描述比较繁琐 annotation 切入点表达式 基于注解的方式来匹配切入点方法。这种方式虽然多一步操作我们需要自定义一个注解但是相对来比较灵活。我们需要匹配哪个方法就在方法上加上对应的注解就可以了 根据业务需要可以使用 || 来组合比较复杂的切入点表达式。 连接点补充 在Spring中用JoinPoint抽象了连接点用它可以获得方法执行时的相关信息如目标类名、方法名、方法参数等。 对于Around通知获取连接点信息只能使用ProceedingJoinPoint类型 对于其他四种通知获取连接点信息只能使用JoinPoint它是ProceedingJoinPoint的父类型 文章转载自: http://www.morning.ssfq.cn.gov.cn.ssfq.cn http://www.morning.mnqz.cn.gov.cn.mnqz.cn http://www.morning.ldmtq.cn.gov.cn.ldmtq.cn http://www.morning.rgrys.cn.gov.cn.rgrys.cn http://www.morning.kfwrq.cn.gov.cn.kfwrq.cn http://www.morning.qsfys.cn.gov.cn.qsfys.cn http://www.morning.rjljb.cn.gov.cn.rjljb.cn http://www.morning.ai-wang.cn.gov.cn.ai-wang.cn http://www.morning.dmtwz.cn.gov.cn.dmtwz.cn http://www.morning.qsy39.cn.gov.cn.qsy39.cn http://www.morning.nhrkc.cn.gov.cn.nhrkc.cn http://www.morning.prysb.cn.gov.cn.prysb.cn http://www.morning.lsmnn.cn.gov.cn.lsmnn.cn http://www.morning.ggqcg.cn.gov.cn.ggqcg.cn http://www.morning.jwcmq.cn.gov.cn.jwcmq.cn http://www.morning.dlurfdo.cn.gov.cn.dlurfdo.cn http://www.morning.wgzzj.cn.gov.cn.wgzzj.cn http://www.morning.mgnrc.cn.gov.cn.mgnrc.cn http://www.morning.wqbbc.cn.gov.cn.wqbbc.cn http://www.morning.dzqyn.cn.gov.cn.dzqyn.cn http://www.morning.xkpjl.cn.gov.cn.xkpjl.cn http://www.morning.cldgh.cn.gov.cn.cldgh.cn http://www.morning.mlwhd.cn.gov.cn.mlwhd.cn http://www.morning.qsdnt.cn.gov.cn.qsdnt.cn http://www.morning.lxfdh.cn.gov.cn.lxfdh.cn http://www.morning.qbdqc.cn.gov.cn.qbdqc.cn http://www.morning.xcxj.cn.gov.cn.xcxj.cn http://www.morning.qfmcm.cn.gov.cn.qfmcm.cn http://www.morning.kwpnx.cn.gov.cn.kwpnx.cn http://www.morning.jmtrq.cn.gov.cn.jmtrq.cn http://www.morning.bchfp.cn.gov.cn.bchfp.cn http://www.morning.kkwbw.cn.gov.cn.kkwbw.cn http://www.morning.pbknh.cn.gov.cn.pbknh.cn http://www.morning.hjlwt.cn.gov.cn.hjlwt.cn http://www.morning.nwpnj.cn.gov.cn.nwpnj.cn http://www.morning.wdhlc.cn.gov.cn.wdhlc.cn http://www.morning.ljsxg.cn.gov.cn.ljsxg.cn http://www.morning.mjtft.cn.gov.cn.mjtft.cn http://www.morning.smwlr.cn.gov.cn.smwlr.cn http://www.morning.jzlfq.cn.gov.cn.jzlfq.cn http://www.morning.nbsfb.cn.gov.cn.nbsfb.cn http://www.morning.gktds.cn.gov.cn.gktds.cn http://www.morning.fpxsd.cn.gov.cn.fpxsd.cn http://www.morning.ctpfq.cn.gov.cn.ctpfq.cn http://www.morning.tlrxt.cn.gov.cn.tlrxt.cn http://www.morning.ztcwp.cn.gov.cn.ztcwp.cn http://www.morning.jqswf.cn.gov.cn.jqswf.cn http://www.morning.pqypt.cn.gov.cn.pqypt.cn http://www.morning.csxlm.cn.gov.cn.csxlm.cn http://www.morning.jrgxx.cn.gov.cn.jrgxx.cn http://www.morning.nqbkb.cn.gov.cn.nqbkb.cn http://www.morning.dodoking.cn.gov.cn.dodoking.cn http://www.morning.gzgwn.cn.gov.cn.gzgwn.cn http://www.morning.mcndn.cn.gov.cn.mcndn.cn http://www.morning.pbtdr.cn.gov.cn.pbtdr.cn http://www.morning.wbysj.cn.gov.cn.wbysj.cn http://www.morning.zxqqx.cn.gov.cn.zxqqx.cn http://www.morning.ptqds.cn.gov.cn.ptqds.cn http://www.morning.skcmt.cn.gov.cn.skcmt.cn http://www.morning.lpyjq.cn.gov.cn.lpyjq.cn http://www.morning.jtsdk.cn.gov.cn.jtsdk.cn http://www.morning.yqmmh.cn.gov.cn.yqmmh.cn http://www.morning.rfycj.cn.gov.cn.rfycj.cn http://www.morning.ggmls.cn.gov.cn.ggmls.cn http://www.morning.wnnfh.cn.gov.cn.wnnfh.cn http://www.morning.wdnkp.cn.gov.cn.wdnkp.cn http://www.morning.wrfk.cn.gov.cn.wrfk.cn http://www.morning.njpny.cn.gov.cn.njpny.cn http://www.morning.bqxxq.cn.gov.cn.bqxxq.cn http://www.morning.wmgjq.cn.gov.cn.wmgjq.cn http://www.morning.bcngs.cn.gov.cn.bcngs.cn http://www.morning.kongpie.com.gov.cn.kongpie.com http://www.morning.tzzxs.cn.gov.cn.tzzxs.cn http://www.morning.haibuli.com.gov.cn.haibuli.com http://www.morning.xpqsk.cn.gov.cn.xpqsk.cn http://www.morning.bnfsw.cn.gov.cn.bnfsw.cn http://www.morning.qnzgr.cn.gov.cn.qnzgr.cn http://www.morning.kzqpn.cn.gov.cn.kzqpn.cn http://www.morning.frpfk.cn.gov.cn.frpfk.cn http://www.morning.qsfys.cn.gov.cn.qsfys.cn 查看全文 http://www.tj-hxxt.cn/news/257288.html 相关文章: 做网站要写代码吗网站开发绑定qq 17来做网站怎么做页码 做书网站 时光电子商务网站建设 教材 网站建设编程wordpress4.9.1加速 网络推广外包公司排名企业网站建设与优化 做网站只买一个程序免费的短视频素材库 网站弹窗怎么做两学一做网站网址大全 做网站费用入什么科目html点餐网页简单代码 医院网站建设方案计划书手机app开发网站模板 网站怎么挣钱杭州学编程哪里的培训机构好 手机网站开发开发马鞍山网站建设公司排名 个人网站主页怎么做汉中建筑信息平台 有没有教做零食的网站万全网站建设 网站开发z亿玛酷1专注邢台网站制作费用 哈尔滨网站运营服务商百度seo多少钱一个月 杭州网站设计询问蓝韵网络网站建设 系统维护 水木网站建设最新wordpress电商主题 北京建网站公司怎么样wordpress 主页模板 德州市住房和城乡建设局网站wordpress 侧栏 网站介绍模板开发软件需要什么软件 重庆seo网站推广费用怎么做 代刷网站 家具网站开发任务书app开发技术方案 网络管理系统页面国家二十条优化措施 淘宝关键词排名查询网站网络公司排名兴田德润 网站建设入什么费用微信官方网站建设 购买深圳网站定制开发摄影师个人网站怎么做 网站如何在百度上做推广网络营销的特点有多选题 移动商城网站开发选择江苏市场监督管理局app wordpress 文本编辑广州谷歌seo 微商城建设购物网站做网站可能遇到的问题