Solon Aop 特色开发(5)切面与环绕拦截

Solon,更小、更快、更自由!本系列专门介绍Solon Aop方面的特色:

想要环绕拦截一个Bean的函数。需要三个前置条件:

  1. 通过注解进行拦截(不能无缘无故给拦了)
  2. Bean 的 method 是被代理的
  3. 在 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等开发。

项目地址:

附:入门示例
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值