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

最大的高仿手表网站seo优化技术培训

最大的高仿手表网站,seo优化技术培训,门户网站如何帮企业做宣传,做网站业务员怎么查找客户目录 Aspect的使用 配置 作用 通知相关的注解 例子 结果#xff1a; Aspect作用和Spring Aop关系 示例 标签表达式 Aspect的使用 配置 要启用 Spring AOP 和 Aspect 注解#xff0c;需要在 Spring 配置中启用 AspectJ 自动代理#xff0c;但是在 Spring Boot 中Aspect的使用 配置 作用 通知相关的注解 例子 结果 Aspect作用和Spring Aop关系 示例 标签表达式 Aspect的使用 配置 要启用 Spring AOP 和 Aspect 注解需要在 Spring 配置中启用 AspectJ 自动代理但是在 Spring Boot 中通常不需要显式地添加 EnableAspectJAutoProxy因为 Spring Boot 的自动配置特性已经包含了这一设置。 Configuration EnableAspectJAutoProxy public class AppConfig {// ... }Aspect 注解也要写Component或通过其他方式注册为 Spring Bean以确保 Spring 容器能够识别并管理这个切面。 Aspect Component public class LoggingAspect { } 作用 定义切面Aspect 切面是跨多个类或对象的横切关注点的模块化。在 Spring AOP 中切面是通过使用 Aspect 注解的类来表示的。 切入点Pointcut 使用 Pointcut 注解来定义切入点表达式指定切面应用的位置。切入点定义了切面应该在何处插入其横切逻辑即切面应该应用的连接点如方法执行的集合。 通知Advice 前置通知Before advice在某连接点方法执行等之前执行但这个通知不能阻止连接点之前的执行流程除非它抛出一个异常。后置通知After advice在某连接点之后执行无论该连接点是正常完成还是抛出异常。 返回后通知After-returning advice在某连接点正常完成后执行。 抛出异常后通知After-throwing advice如果方法抛出异常退出则执行通知。 环绕通知Around advice在方法调用之前和之后执行它将决定是否继续执行连接点或直接返回自己的返回值或抛出异常。 通知相关的注解 Around环绕增强: 就是既可以前置增强也可以后置增强。环绕通知会影响到AfterThrowing通知的运行,不要同时使用。  Before标识一个前置增强方法 AfterReturning后置增强如无返回结果此注解不会执行 After:final增强不管是抛出异常或者正常退出都会执行 AfterThrowing 异常抛出增强 例子 假设我们有一个服务类 SampleService我们想在其方法执行的不同阶段添加日志。 public class SampleService {public void performAction() {System.out.println(Performing action in SampleService);} }现在我们定义一个切面 LoggingAspect 来添加日志 Aspect Component public class LoggingAspect {// 前置通知在方法执行之前执行Before(execution(* SampleService.performAction(..)))public void logBefore(JoinPoint joinPoint) {System.out.println(Before executing: joinPoint.getSignature().getName());}// 后置通知在方法执行之后执行无论是否发生异常After(execution(* SampleService.performAction(..)))public void logAfter(JoinPoint joinPoint) {System.out.println(After executing: joinPoint.getSignature().getName());}// 返回后通知在方法成功执行之后执行AfterReturning(execution(* SampleService.performAction(..)))public void logAfterReturning(JoinPoint joinPoint) {System.out.println(After returning from: joinPoint.getSignature().getName());}// 异常后通知在方法抛出异常后执行AfterThrowing(pointcut execution(* SampleService.performAction(..)), throwing ex)public void logAfterThrowing(JoinPoint joinPoint, Throwable ex) {System.out.println(After throwing in: joinPoint.getSignature().getName() , Exception: ex);}// 环绕通知在方法执行之前和之后执行Around(execution(* SampleService.performAction(..)))public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable {System.out.println(Around before: joinPoint.getSignature().getName());Object result joinPoint.proceed(); // 继续执行方法System.out.println(Around after: joinPoint.getSignature().getName());return result;} }结果 就Before来说只要performAction方法被调用那么第一步就是先执行这段代码System.out.println(Before executing: joinPoint.getSignature().getName());执行完后在执行performAction方法。其他方法也是如此只是触发时机不同罢了。 Aspect作用和Spring Aop关系 Aspect 是 AspectJ 框架中的一个注解它是面向切面编程AOP的一个关键部分。AspectJ 是一个独立的 AOP 框架而 Spring 框架包括 Spring Boot则集成了 AspectJ 的一部分功能使得开发者可以在 Spring 应用中方便地使用 AOP。 AOP 是一种编程范式软件工程中的一类典型的编程风格。用于增加程序的模块化通过将横切关注点如日志、安全、事务管理等从业务逻辑中分离出来提高代码的可重用性和可维护性。说白了其实我感觉就是动态代理可以为相关方法前后等统一进行一些处理。 Spring Boot 作为 Spring 框架的一个扩展继承了 Spring 的 AOP 功能。在 Spring Boot 应用中AOP 使用代理模式来实现 AOP其中 Aspect 注解的类被当作一个带有通知Advice和切入点Pointcut的切面。 Spring AOP 使用代理模式来拦截对对象的方法调用。当在 Spring 应用中定义了 AOP 切面时Spring 容器会为匹配切面指定的切入点的 Bean 创建一个代理对象。这个代理对象在调用原始方法之前或之后执行切面中定义的逻辑。 动态代理如果一个 Bean 至少实现了一个接口Spring AOP 默认会使用 JDK 的动态代理来创建这个 Bean 的代理。CGLIB 代理如果一个 Bean 没有实现任何接口Spring AOP 会使用 CGLIB 库来创建代理。 虽然使用 Aspect 注解和 Before、After 等注解定义了切面的行为但这些注解本身并不负责拦截方法调用。真正的方法拦截是由 Spring AOP 在背后通过动态代理机制来实现的。当方法被调用时实际上是先调用代理对象的对应方法代理对象再根据 AOP 配置来决定是否调用原始对象的方法以及在调用前后执行哪些额外的逻辑。 示例 假设有一个简单的服务类 MyService我们想在其 performAction 方法执行前后添加日志 public class MyService {public void performAction() {System.out.println(Performing action);} }Aspect Component public class LoggingAspect {Before(execution(* MyService.performAction(..)))public void logBefore() {System.out.println(Before action);}After(execution(* MyService.performAction(..)))public void logAfter() {System.out.println(After action);} }在这里LoggingAspect 定义了在 MyService 的 performAction 方法执行前后要执行的日志操作。但实际上当 performAction 方法被调用时它是通过 MyService 的代理来调用的代理负责根据 LoggingAspect 的配置执行相应的 AOP 逻辑。 发现通知参数中的joinPoint不知道做什么用请看我的下一章 Springboot注解Aspect二JoinPoint 使用详解 标签表达式 上述例子中你会好奇 Before(execution(* SampleService.performAction(..)))这中间的execution是什么意思后面括号内是什么意思。这其实是注解使用的标签表达式有如下这些 within用于匹配指定类型内的方法执行 this用于匹配当前AOP代理对象类型的执行方法注意是AOP代理对象的类型匹配这样就可能包括引入接口也* 类型匹配 target用于匹配当前目标对象类型的执行方法注意是目标对象的类型匹配这样就不包括引入接口也类型匹配 args用于匹配当前执行的方法传入的参数为指定类型的执行方法 within用于匹配所以持有指定注解类型内的方法 target用于匹配当前目标对象类型的执行方法其中目标对象持有指定的注解和annotation区别是不用全路径 args用于匹配当前执行的方法传入的参数持有指定注解的执行 annotation用于匹配当前执行方法持有指定注解的方法 主要记住execution和annotation用的比较多一个是用在方法上一个是用在相关注解上 如何编写切入点表达式 匹配特定方法execution([权限加返回类型] [类路径].[方法名称]([参数])) 匹配带有特定注解的方法annotation(com.example.MyAnnotation) 匹配所有被 MyAnnotation 注解的方法。 其中 (..)代表所有参数 (*String)代表第一个参数为任何值,第二个为String类型 (..,String)代表最后一个参数是String类型 发现通知参数中的joinPoint不知道做什么用请看我的下一章 Springboot注解Aspect二JoinPoint 使用详解 ------------------------------------------与正文内容无关------------------------------------ 如果觉的文章写对各位读者老爷们有帮助的话麻烦点赞加关注呗作者在这拜谢了! 混口饭吃了如果你需要Java 、Python毕设、商务合作、技术交流、就业指导、技术支持度过试用期。请在关注私信我本人看到一定马上回复
http://www.dnsts.com.cn/news/60082.html

相关文章:

  • 山东省工程建设管理信息网站编程 朋友 做网站
  • 网站美工设计公司电话上海人才网赶集网
  • 加强公司门户网站建设方案wordpress 源文件导入
  • 网站首页设计费用泰安建设银行网站
  • 水墨风格 网站wordpress数字超市
  • 自己做的网站怎么加搜索功能江苏省建设工程质量监督站网站
  • 东莞网络公司 网站建设南京玄武网站建设
  • 山东省建设厅的网站o2o网站设计公司
  • 公司网站域名如何申请西安做网站公司哪家好 应该怎么选择
  • 杭州网站推广15个国内互动网站设计欣赏
  • 微信订阅号做网站淄博网站推广
  • 创意专业网站建设2022年中国500强公司排名
  • 学做缝纫的网站网络媒体发稿
  • 佛山网站设计电话凡科这样的建站网站
  • 兰州网站建设模板网页后台常用设计尺寸
  • 网站形式的具体例子wordpress 自定义搜索
  • 大连网络备案做网站好听的网络平台起名
  • 网站关于我们怎么做新手机发布
  • 网站是用dreamer做的_为什么后台能进去前台进不去了网站设置怎么删除数据
  • 海东市网站建设phpstudy2016快速搭建网站
  • 长沙简单的网站建设公司平坝网站建设
  • 中国最好的建设网站闵行网站建设公司
  • 东莞网站建设 汇卓河南搜索引擎推广多少钱
  • 记事本做网站怎么调整图片间距网站业务建设是什么意思
  • html期末大作业个人网站制作如何网页优化
  • 电子商务网站后台wordpress foundation
  • 如何熟悉网站项目的逻辑门户网站建设自评报告
  • 商城网站建设设计介绍p2p网站建设报价
  • 网站域名查询ip地址青岛百度网站排名
  • 网站建设必须要备案吗wordpress图片轮播