Solon Aop 特色开发(5)切面与环绕拦截
Solon,更小、更快、更自由!本系列专门介绍Solon Aop方面的特色:
想要环绕拦截一个Bean的函数。需要三个前置条件:
- 通过注解进行拦截(不能无缘无故给拦了)
- Bean 的 method 是被代理的
- 在 Bean 被扫描之前,完成环绕拦截的注册(了解一下 Solon 的启动逻辑顺序)
一、定义切点和注册环绕拦截
Solon 的切点,通过注解实现,得先定义一个。例如:@Logging
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Logging {
}
注册环绕拦截
Aop.context().beanAroundAdd(Logging.class, inv->{
//此处为拦截处理
Object rst = inv.invoke();
log.info("Args: {}\nReturn: {}", inv.args(), rst);
return rst;
});
现在切点定义好了,可以到处“埋”了...
二、应用:把切点“埋”到需要的地方
@Service
public class DemoController{
@Logging
public void addUser(UserModel user){
//...
}
}
就这样完成一个面向切面的开发了。
三、通过插件及插件配置,变成一个复用的东西
这是刚才定义注解:
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Logging {
}
开发插件:
@Slf4j
public class XPluginImp implements Plugin {
@Override
public void start(SolonApp app) {
Aop.context().beanAroundAdd(Logging.class, inv->{
Object rst = inv.invoke();
log.info("Args: {}\nReturn: {}", inv.args(), rst);
});
}
}
配置插件:
solon.plugin=xxx.xxx.log.XPluginImp
一个可复用的插件开发完成了。关于Solon插件开发,可参考《Solon 框架详解(五)- Solon扩展机制之Solon Plugin》。
附:Solon 是什么?
一个插件式的 Java 微型基础开发框架。支持Web、Job、Remoting、MicoService等开发。
项目地址:
附:入门示例
- Solon 入门教程示例:https://gitee.com/noear/solon_demo
- Solon Rpc 入门教程示例:https://gitee.com/noear/solon_rpc_demo
- Solon Cloud 入门教程示例:https://gitee.com/noear/solon_cloud_demo
- Solon 进阶教程示例:https://gitee.com/noear/solon_advance_demo
Solon Aop 特色开发(5)切面与环绕拦截的更多相关文章
- Solon Aop 特色开发(1)注入或手动获取配置
常规操作,先启动 Solon public class App{ public void main(String[] args){ Solon.start(App.class, args); } } ...
- Solon 开发,五、切面与环绕拦截
Solon 开发 一.注入或手动获取配置 二.注入或手动获取Bean 三.构建一个Bean的三种方式 四.Bean 扫描的三种方式 五.切面与环绕拦截 六.提取Bean的函数进行定制开发 七.自定义注 ...
- [Spring框架]Spring AOP基础入门总结二:Spring基于AspectJ的AOP的开发.
前言: 在上一篇中: [Spring框架]Spring AOP基础入门总结一. 中 我们已经知道了一个Spring AOP程序是如何开发的, 在这里呢我们将基于AspectJ来进行AOP 的总结和学习 ...
- Spring基于AspectJ的AOP的开发——注解
源码:https://gitee.com/kszsa/dchart 一, AspectJ的概述: AspectJ是一个面向切面的框架,它扩展了Java语言.AspectJ定义了AOP语法所以它有一个专 ...
- (转)Spring使用AspectJ进行AOP的开发:注解方式
http://blog.csdn.net/yerenyuan_pku/article/details/69790950 Spring使用AspectJ进行AOP的开发:注解方式 之前我已讲过Sprin ...
- spring框架之AspectJ的XML方式完成AOP的开发
1. 步骤一:创建JavaWEB项目,引入具体的开发的jar包 * 先引入Spring框架开发的基本开发包 * 再引入Spring框架的AOP的开发包 * spring的传统AOP的开发的包 * sp ...
- 理解AOP思想(面向切面编程)
AOP:面向切面编程,相信很多刚接触这个词的同行都不是很明白什么,百度一下看到下面这几句话: 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预 ...
- spring aop使用,spring aop注解,Spring切面编程
================================ ©Copyright 蕃薯耀 2020-01-21 https://www.cnblogs.com/fanshuyao/ 一.第一步, ...
- Solon详解(三)- Solon的web开发
Solon详解系列文章: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播机制 ...
- Springboot mini - Solon详解(三)- Solon的web开发
Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...
随机推荐
- oceanbase 数据库SQL优化 (把你的脑袋当成CBO)
OB一哥们找我优化条SQL,反馈在OceanBase存储过程执行时间很慢,需要626秒才能出结果,安排. INSERT INTO insurance_stat_sx (id, stat_date, c ...
- webpack 从 v4 升级到 v5
准备工作 Node.js 至少升级到 v10.13.x 以上. 其它 修改 webpack.config.js 配置,以及部分老的 webpack 插件要更新. 参考 中文版 从 v4 升级到 v5 ...
- ACPM高效C++组件管理让音视频终端SDK性能更好、稳定性更高
本专栏将分享阿里云视频云MediaBox系列技术文章,深度剖析音视频开发利器的技术架构.技术性能.开发能效和最佳实践,一起开启音视频的开发之旅.本文为MediaBox技术架构篇,重点从 ACPM介绍. ...
- CoreFlex框架发布 `0.1.1`
CoreFlex框架发布 0.1.1 框架描述 CoreFlex是一个支持.NET 6,.NET 7,.NET 8的快速开发框架,也提供MasaFramework相关框架的集成提供更多功能模块, 集成 ...
- MCube动态化与原生工程结合最佳实践
跨端动态化开发方案重要性日益凸显,本文对我们团队MCube动态化实践做了总结,为大家提供经验和借鉴. 接入背景 随着我们工程的需求迭代,暴露出了业务需求量大,分端开发和发版更新成本高等痛点,使用H5页 ...
- springboot下添加日志模块和设置日志文件输出
前言 日志的使用将通过SLF4J来使用,SLF4J(Simple Logging Facade for Java)是一个为Java应用提供简单日志记录的接口.它的主要目标是在不同的日志系统之间提供一个 ...
- springMvc_控制台中文乱码问题
Post方法解决控制台乱码 @Override protected Filter[] getServletFilters() { CharacterEncodingFilter filter = ne ...
- 2023 年最后一波工具安利「GitHub 热点速览」
2023 年还有两周就要接近尾声了,2023 年的热点速览还有一波工具好安利:比如上周推荐之后上了热榜的远程调试工具 page-spy-web,让调试像呼吸一般自然方便:还有轻量级的搜索引擎 oram ...
- 【scikit-learn基础】--『监督学习』之 岭回归
岭回归(Ridge Regression)是一种用于处理共线性数据的线性回归改进方法.和上一篇用基于最小二乘法的线性回归相比,它通过放弃最小二乘的无偏性,以损失部分信息.降低精度为代价来获得更实际和可 ...
- 混合专家模型 (MoE) 详解
随着 Mixtral 8x7B (announcement, model card) 的推出,一种称为混合专家模型 (Mixed Expert Models,简称 MoEs) 的 Transforme ...