维护4年的组件化框架 Component 升级到 KComponent 啦

news2024/11/16 10:55:41

在这里插入图片描述

前言

KComponent 它来啦. 从 2018.8 开始, Component 项目正式开源. 到目前已经 4 年的时间了. 这几年中, Component 不断升级优化. 最后趋于稳定.

为了组件化框架更好的发展, KComponent 继承了 Component 的优点, 升级为一个纯 Kotlin 的项目. 不再支持 Java, 注解驱动器也升级为 KSP

如果想要兼容 Java, 还请继续使用 Component , 如果你的项目是纯 Kotlin 项目, 请使用 KComponent

KComponent 比 Component 的优点

  1. 拦截器不再通过 callback 方式, 直接提供 suspend 方法. 这个大家看到就懂了. 可以更方便的在拦截器中写耗时或者并且的代码了
  2. 拦截器的类上支持 @MainThread 和 @IOThread 注解来决定拦截器默认的执行线程
  3. 属性注入支持 late init 以及 Nullable 和 NonNull 的属性了
  4. 支持注入 Uri 参数了
  5. 注解驱动器从 Annotation 和 Kapt 升级为 Ksp. 编译的速度提升了不少!!!
  6. 重命名几个有歧义的 callback 的名称.

依赖配置

手动加载 反射 或者 自动加载 ASM 字节码

路由

@RouterAnno(
    hostAndPath = "user/login",
)
class LoginAct: AppCompatActivity {
  
  @AttrValueAutowiredAnno
  late init name: String
  
  @AttrValueAutowiredAnno("password")
  var password1: String? = null
  
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    Component.inject(target = this)
    // xxxxxx
  }
  
}
Router
.with(context)
.hostAndPath("user/login")
.putString("name", "xiaojinzi")
.putString("password", "123456")
.forword()

更多的用法和更详细的解释请查看文档:路由跳转 和 路由标记 @RouterAnno 的使用

服务发现

interface UserSpi {
  fun login(name: String, password: String)
}

@ServiceAnno(UserSpi::class)
class UserSpiImpl : UserSpi {
  fun login(name: String, password: String) {
    // xxxx
  }
}
UserSpi::class.service()?.login(name = "xiaojinzi", password = "xxxxxx")

更多的用法和更详细的解释请查看文档:服务发现的使用 和 [服务的装饰增强](

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/73412.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java招生报名咨询系统毕业设计,Java招生咨询问答系统设计与实现,毕业设计论文怎么写毕设源码开题报告需求分析怎么做

功能清单 【系统管理员功能】 关于我们设置:设置学校简介、联系我们、加入我们、法律声明、学校详情 广告管理:设置小程序首页轮播图广告和链接 留言列表:所有用户留言信息列表,支持删除 会员列表:查看所有注册会员信…

20.前端笔记CSS-精灵图

1、为啥要精灵图 一个网页中往往会应用很多小的背景图像作为修饰,当网页中的图像过多时,服务器就会频繁的接收和发生请求图片,造成服务器的请求压力过大,这会大大降低页面的加载速度 为了有效减少服务器接收和发生请求的次数&…

[附源码]JAVA毕业设计图书借阅系统演示录像(系统+LW)

[附源码]JAVA毕业设计图书借阅系统演示录像(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目…

你不知道的goland技巧

很多人使用 Goland 有很长时间的,却没有好好利用上 Goland 工具带给我们的遍历,今天咱们就来解锁一下新技巧 过去我们使用 Goland 就是简单的配置一下 go 的 proxy ,以及配置一下 ssh ,与服务器进行文件的上传和下载,其…

基于Hadoop的用户购买行为的商品推荐系统

目录 一 绪论 1 1.1 编写目的 1 1.2 背景及意义 1 1.3 开发及运行环境 2 二 需求分析 3 2.1 系统概述 3 2.3 系统功能需求 4 2.3.1 收集原始数据 4 2.3.2 计算物品相似度矩阵 4 2.3.3 计算用户购买向量 5 2.3.4 计算推荐向量并去重和排序 5 2.3.4 数据入库 5 2.3.5 作业控制 5 …

百数:用报表搭建生产进度看板,让生产更高效

现如今我国已经步入了全新的现代化科技时代,国内各个行业对于数字技术也在进行着不断地应用和研究。目前数字技术在企业生产管理系统的运用中具备较为显著的优势,其中生产进度看板就是数字化管理系统的重要应用之一。 生产进度看板是一种可视化管理系统…

计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度附Matlab代码和论文复现

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

Mysql性能测试主要内容

Mysql性能测试主要内容 相信很多做性能测试的朋友都知道,性能测试并不单单只是看服务器cpu、IO、内存、网络等,我们还需要了解Mysql性能,那么我们看看Mysql性能主要内容有哪些呢? MySql数据库介绍 Mysql相信大家做测试的&#…

领导科学论坛杂志领导科学论坛杂志社领导科学论坛编辑部2022年第10期目录

理论前沿 列宁《怎么办?》中理论斗争思想及其当代价值研究 游玲; 1-7 共青团引领青年思想的百年历程及经验启示 许丽珠; 8-14 新发展格局下推进乡村产业振兴的现实困境与实践进路 杨帆; 15-19 “三治融合”治理体系的内部逻辑与创新策略 皋媛;戢仕铭…

进阶 - Git的Feature分支

本篇文章,是基于我自用Linux系统中的自定义文件夹“test_rep”,当做示例演示 具体Git仓库的目录在:/usr/local/git/test_rep Git的Feature分支 软件开发中,总有无穷无尽的新的功能要不断添加进来。添加一个新功能时,你…

yolov4-tiny通过pytorch导出不带split算子的onnx

前言 最近一直忙于模型移植板端,用了不少厂家的sdk,发现挺多厂家的sdk都处于起步阶段,缺少一些技术支持,比如不支持五维向量,不支持一些onnx算子,不支持过深的模型结构,我最爱的Yolov5,v6,v7等…

阿里云公网部署openyurt集群添加本地边缘节点并支持metrics-server和prometheus

公网部署openyurt集群并支持metrics-server和prometheus删除以前的集群创建虚拟网卡初始化主节点安装kubeadm等初始化安装网络插件flannel根据官方文档调整部署OpenYurt的Control-Plane组件部署openyurt/openyurt组件部署kuboard方便可视化主节点改造使其可以部署metrics-serve…

字节算法中了80%!靠着这份GitHub上的算法小抄,成功斩获字节Offer

最近,GitHub上的算法小抄又火了!已经有不少人靠它手撕算法题,拿下了字节、腾讯等大厂offer! 不问不知道,这份刷题笔记来自FB高级架构师、ACM金牌选手。 这位大佬在刷题和打ACM比赛中总结出了经验和套路,又…

C#基础知识体系框架图,及起对应我发过的博客

自己工作开发C#上位机总结的,不好勿喷,更多资料去微软官网搜索就好 下面按照从基础到开发使用的顺序,对应我以前发过的链接(后面再附上我自己的框架图): C#与C不同的一些基础命令_花开莫与流年错_的博客-…

深入理解Java中的三个修饰符(抽象(abstract)、静态(static)和最终的,不可变(final))【配视频】

🍅程序员小王的博客:程序员小王的博客 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅java自学的学习…

Linux文件系统上的特殊权限

Linux 的文件权限,远不止 rwx 那么简单,还有一些特殊权限是用来打破限制和默认的安全上下文规则的,除了之前介绍过的隐藏属性,还有几个显式的特殊权限。下面就来说说 Linux 文件系统上的 SUID,SGID 和 Sticky 权限。 …

Vue2基础篇-20-生命周期回调函数

1.vue2的生命周期 beforeCreate :在实例初始化之后,进行数据侦听和事件/侦听器的配置之前同步调用; created: 在实例创建完成后被立即同步调用; beforeMount: 在挂载开始之前被调用 mounted : 实例被挂载后调用; beforeUpdate: 在数据发生…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java民生租赁车辆管理信息系统w29s0

如果你自己基础不好或者是小白的情况下那就建议你选择网站、系统类的去做,但是还得问问你们导师,如果你们导师没问题就可以,因为有的导师是不愿意你们选择做网站、系统的,毕竟做的人比较多,重复率调高,选择…

springboot中统一日志管理

Springboot中统一日志管理 一、为什么要用日志? 一般分为两个大类:操作日志和系统日志 **操作日志:**用户在操作软件时记录下来的操作步骤,便于用户自己查看。主要针对的是用户。 **系统日志:**系统日志是记录系统…

zeno封装子图

选中想要封装的节点,点击编辑->简易子图 2. 设置输入输出(可以有多个) 最后,在main图中测试