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

wap网站建设开发汽车之家网址

wap网站建设开发,汽车之家网址,网络服务相关资料,济南手工网站建设公司前言 AOP编程在Java开发中是一个非常火热的话题,最著名的库为AspectJ Kotlin项目中,通过Gradle插件,也能够使用该库,这是我们下面讲解的重点 由于AspectJ的原理是在预编译阶段,通过插件修改代码,生成代理…
前言

AOP编程在Java开发中是一个非常火热的话题,最著名的库为AspectJ

Kotlin项目中,通过Gradle插件,也能够使用该库,这是我们下面讲解的重点

由于AspectJ的原理是在预编译阶段,通过插件修改代码,生成代理对象

属于编译阶段的功能,因为非常依赖编译工具的版本

这里用的版本是Gradle8.7,如果不兼容记得调整版本号

Gradle脚本代码,用的也是Gradle8.7+KotlinScript的语法,记得根据版本调整

引入插件依赖
pluginManagement {plugins {id("org.jetbrains.kotlin.jvm") version "1.9.23" apply falseid("io.freefair.aspectj.post-compile-weaving") version "8.7.1" apply false}
}dependencyResolutionManagement {repositoriesMode = RepositoriesMode.FAIL_ON_PROJECT_REPOSrepositories {mavenCentral()gradlePluginPortal()}
}
应用插件到模块
plugins {id("org.jetbrains.kotlin.jvm")id("io.freefair.aspectj.post-compile-weaving")
}dependencies {api("org.aspectj:aspectjrt:1.9.6")api("org.aspectj:aspectjweaver:1.9.6")
}
Kotlin代码
package com.code.kotlinfun main() {Good().doSomething()
}class Good {fun doSomething() {println("doSomething")}
}
AOP规则

插件会自动搜索带有@Aspect注解的文件

@Pointcut通过特征表达式,来指定切入点,即要拦截哪些方法

@Before @After指定切入方式,即在什么时机切入,方法执行前,还是方法执行后

其它更详细的注解,大家自己根据需要去了解,这里主要讲解集成和使用方式

package com.code.kotlinimport org.aspectj.lang.JoinPoint
import org.aspectj.lang.annotation.After
import org.aspectj.lang.annotation.Aspect
import org.aspectj.lang.annotation.Before
import org.aspectj.lang.annotation.Pointcut@Aspect
class AspectRule {@Pointcut("execution(* com.code.kotlin.Good.doSomething(..))")fun anyFunction() {}@Before("anyFunction()")fun beforeFunction(joinPoint: JoinPoint) {println("before function executed: $joinPoint")}@After("anyFunction()")fun afterFunction(joinPoint: JoinPoint) {println("after function executed: $joinPoint")}
}
运行结果
before function executed: execution(void com.code.kotlin.Good.doSomething())
doSomething
after function executed: execution(void com.code.kotlin.Good.doSomething())
优势分析

可以看到,简单引入和应用插件即可

AOP代码完全独立于原始代码,真正做到了代码解耦

非常适合对关键位置代码进行监听和修改的需求

注意事项

由于生成的代码依赖于Gradle插件

所以AOP规则修改后,如果代码没生效,可以尝试Reload一下Gradle脚本

另外,此插件和安卓编译插件,在实现方式上容易产生版本冲突

安卓项目需要使用AOP,建议使用其它插件,这个我们下一章会讲解

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

相关文章:

  • 地方门户网站建站流程网站建设与管理实训报告总结
  • 无锡企业网站制作策划柳州本地做网站的公司
  • 山西seo博客连云港公司网站优化服务
  • 网站推广小助手网站里添加聊天框怎么做
  • 开发一个网站一般需要多少钱国内企业邮箱排名
  • 深圳做门户网站只做画册的网站
  • 权威的赣州网站建设成都企业网站开发
  • 苏州网站设计价格新区快速seo排名
  • 快速搭建网站服务器wordpress做门户网
  • 阿里云有网站建设吗网站开发 云智互联
  • 网站开发知识视频教程2021年uc秒懂网址推荐
  • 上海网站建设领导品牌学生个人简历
  • 做设计私活的网站建设一个电商网站的流程
  • 网站建设公司找哪家好金昌市住房和城乡建设局网站
  • 中国建设教育学会网站做衣服 网站
  • 男女做爰高清免费网站花乡科技园区网站建设
  • 网站标题title为什么不能频繁的改网站如何做标题优化
  • 网站建设服务专业建站公司云服务器怎么搭建网站
  • 网站开发报价和开发周期网站新闻 写法
  • 网站上传办法工业互联网平台应用
  • 四川手机网站杭州哪家做外贸网站好
  • 个人网站设计介绍文字大连网络推广公司哪家好
  • 南阳网站怎么推广南宁网站平台
  • 网站文字大小合同模板网站
  • 烟台专业做网站公司wordpress 域名 ip
  • 免费个人网站建设大全html5的网站设计
  • 沙漠风网站建设工程资料代做网站
  • 网站没有被收录原因4399观看视频免费哔哩哔哩
  • 政务公开和网站建设自查报告广州网站推广技巧
  • iis 配置网站详解怎么看一个网站做得好不好