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 ...
随机推荐
- java_2.常量、Scanner类、基本数据类型转换、算数运算符
常量.Scanner类.基本数据类型转换.算数运算符 变量和常量 常量 1.使用final关键字修饰,只能赋值一次,不可以修改值. 2.常量的名称使用全大写. 3.多个单词使用下划线分隔. publi ...
- 普冉PY32系列(十二) 基于PY32F002A的6+1通道遥控小车III - 驱动篇
目录 普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU简介 普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境 普冉PY32系列(三) P ...
- 【VMware vCenter】使用cmsso-util命令进行链接、删除、修改多个vCenter Server(VCSA)的SSO域。
VMware vCenter Server 支持新安装的时候选择将vCenter SSO域加入到另外一个现有的SSO域中,同时也支持使用cmsso-util命令将现有的两个或多个vCenter SSO ...
- 一步解决Cannot resolve symbol 'WebServlet'(@WebServlet注解标红)
右键项目名(javaweb01)->Open Module Settings Modules->Dependencies->点击Export上面的,添加Tomcat即可
- VM离线安装Centos 8以及配置
一.安装 1.预装准备 1.1. 硬件准备 物理内存:2G以上(这里指系统搭建所需占用空间) 物理外存:20G(这里指系统搭建所需占用空间) 1.2. 环境搭建准备 Window10系统电脑一台.Vm ...
- 在NET8中使用简化的 AddJwtBearer 认证
开发环境 系统版本: win10 .NET SDK: NET8 开发工具:vscode 参考引用:使用 dotnet user-jwts 管理开发中的 JSON Web 令牌 注意:以下示例中的端口. ...
- 悲观锁、乐观锁、mybatis-plus实现乐观锁
悲观锁.乐观锁.mybatis-plus实现乐观锁 转载自:www.javaman.cn 1.悲观锁.乐观锁 乐观锁和悲观锁是两种用于处理并发操作的数据锁定策略.它们在处理多个事务尝试同时访问和修改同 ...
- [ABC262E] Red and Blue Graph
Problem Statement You are given a simple undirected graph with $N$ vertices and $M$ edges. The verti ...
- k8s安装Dashboard出现了 pod 状态为CrashLoopBackOff
1.问题现象 2.解决办法 (1) 先看一下pods日志信息 kubectl logs -f -n kubernetes-dashboard kubernetes-dashboard-658485d5 ...
- 同样的SQL,怎么突然就慢了?
本篇文章素材来源于某银行系统的一次性能问题分析. 许久没写这种troubleshooting类型的技术文章了,因为曾在服务公司呆过多年,工作原因,这方面之前做的多,听的更多,导致已经达到在自己认知维度 ...