轻量 ioc/aop 框架 loveqq 1.0.3 发布,响应式缓存,更强大的条件注解推断
本次更新:
- 优化: loveqq-mvc,控制器全局异常切面实现从代理改为异常处理器,减少代理调用
- 优化:loveqq-cache,新增响应式缓存支持,默认提供 ConcurrentHashMap 实现
- 优化:loveqq-cache-redis,整合 redisson 响应式缓存支持
- 优化:loveqq-boot-starter-netty,优化过滤器、拦截器均为响应式接口
响应式缓存示例:
下面的示例展示了缓存注解用法,并且实现了响应式/命令式一致的操作体验
@RestController
public class UserController {
@Autowired
private UserMapper userMapper;
@GetMapping
@Cacheable(value = "anyUser", ttl = 3)
public Mono<User> anyUser() {
return Mono.fromSupplier(() -> this.userMapper.listAll().get(0));
}
@GetMapping
@Cacheable("listAllUser")
public Flux<User> listAllUser() {
return Flux.fromStream(() -> this.userMapper.listAll().stream());
}
@GetMapping
@CacheClear(value = "listAllUser", condition = "retVal", preClearTimeout = 2000)
public Mono<Boolean> deleteAsync(Long id) {
return Mono.just(true);
}
@GetMapping
@Transactional
@Cacheable("listAllUserWithTransactional")
public List<User> listAllUserWithTransactional() {
return this.userMapper.listAll();
}
@GetMapping("delete")
@CacheClear(value = "listAllUserWithTransactional", condition = "retVal")
public boolean update(Long id) {
return true;
}
}
和 spring 的联系
初期是以学习 spring 进行开发的,但是却并没有参考 spring 的实现,仅仅是把 spring 当做一个黑盒接口,根据 spring 的外在功能表现,使用自己的想法去实现功能,所以该框架,即不是模仿 spring,也不是 spring 的二开。而是一个全新的,但又高度符合 spring 开发者使用习惯的完整的 ioc/aop 框架
和 spring 的区别
和 spring 最大的区别就是,loveqq 具有更强大的条件注解推断,因此不需要 @AutoConfigureBefore、@AutoConfigureAfter 等辅助自动配置的注解,仅仅需要正常配置 bean 即可,无需关心 bean 加载顺序的问题。
下面就是一个很好的例子:
@BootApplication
public class ConditionTest {
private boolean isOverride;
@Autowired(required = false)
private List<Inter> cons;
@Bean
public BB bbOverride() {
this.isOverride = true;
return new BB();
}
@EventListener
public void onComplete(ContextRefreshedEvent event) {
Assert.isTrue(this.isOverride);
Assert.isTrue(this.cons.size() == 5);
}
public static void main(String[] args) {
SpringApplication.run(ConditionTest.class, args);
}
}
interface Inter {}
@Component
@ConditionalOnBean({CC.class, BB.class})
@ConditionalOnClass(name = "com.kfyty.condition.ConditionTest")
class AA implements Inter {}
@Component
@ConditionalOnMissingBean(BB.class)
class BB implements Inter {}
@Component
@ConditionalOnBean(BB.class)
class CC implements Inter {
@Bean
@ConditionalOnBean(AA.class)
public EE ee() {
return new EE();
}
}
class DD implements Inter {}
@Component
@ConditionalOnMissingBean(DD.class)
class DDF implements FactoryBean<DD> {
@Override
public Class<?> getObjectType() {
return DD.class;
}
@Override
public DD getObject() {
return new DD();
}
}
class EE implements Inter {}
- 上述代码,首先 BB 是无条件直接定义的,所以 BB 一定存在;
- 而 CC 仅依赖 BB 存在,所以 CC 一定存在;
- 而 AA 仅依赖 BB、CC 的存在,以及主类的存在,因此 AA 一定存在;
- 而 EE 仅依赖 AA,因此 EE 一定存在;
- 而我们没有直接定义 DD,因此 DDF 一定存在,而 DDF 属于 FactoryBean,它生产了 DD,所以 DD 一定存在;
- 所以 AA、BB、CC、DD、EE 的条件都成立,cons.size () 应该是 5。
- 而上述代码在 spring 下无法通过测试,但是在 loveqq-framework 中是可以测试通过的。
感兴趣的可以体验体验~
关注公众号
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
wlnmp 一键安装包更新 240725
wlnmp 一键安装包 240725 更新内容如下: (新增)OpenCloudos9.x(x86_64、AArch64)新增MySQL8.4、faad2,目前仅针对OpenCloudos9.x(x86_64、AArch64)发布了MySQL8.4版本,后续其它系统,陆续开发适配中。 (其它)MySQL8.4主要更新内容:删除binlog_format,因为已被弃用;innodb_log_file_size = 32M已被弃用,修改为innodb_redo_log_capacity = 32M 关于 wlnmp 从 2019 年初开始维护 wlnmp 一键安装包这个项目,起初只是为了在日常运维过程中,可以快速的部署 lnmp 服务。wlnmp 已支持国产龙蜥 AnolisOS、OpenCloudOS、欧拉 OpenEuler 系统等。 wlnmp 一键安装包基于上游开源软件二次开发,可以在 x86_64、aarch64 架构的 Linux 系统上通过 wlnmp 提供的镜像源,快速部署 Nginx/Mysql/PHP 等常用软件,支持 php、MySQL 多个版本在同一系统中并存。 系...
-
下一篇
TigerVNC 1.14.0 发布,VNC 客户端和服务器
TigerVNC 1.14.0 现已发布。TigerVNC 是一个高级的 VNC 远程访问的实现,允许你查看运行在网络上另一台计算机上的虚拟桌面环境并与之交互;它是基于 RealVNC 4 和 X.org 代码库的高速 VNC 版本。 重点更新内容如下: Xvnc 现在在支持 GBM 的驱动程序上(FOSS 驱动程序和较新的 Nvidia 驱动程序)支持硬件加速 OpenGL 和 Vulkan viewers 和 servers 现在遵循 XDG 基本目录规范,如“~/.config”,用于将文件存储在主目录中。现有用户将继续使用旧版“~/.vnc”目录,但新用户将获得 XDG 目录。 native viewer 现在支持 Apple 的 Diffie-Hellman 和 UltraVNC 的 MSLogonII 身份验证方法 Java viewer 现在支持 RealVNC 的 RSA-AES 身份验证方法 新增 Ubuntu 24.04 软件包 Red Hat Enterprise Linux 7 和 Ubuntu 18.04 软件包已被删除,因为它们已停止使用 native vi...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- MySQL数据库中FOR UPDATE的使用
- MySQL表碎片整理
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker安装Oracle12C,快速搭建Oracle学习环境

微信收款码
支付宝收款码