Solon 开发,六、提取Bean的函数进行定制开发-编程思维

为什么需要提取Bean的函数?绝不是闲得淡疼。比如:控制器的@Mapping;再比如:Xxl-Job的@XxlJob。这些都是要提取Bean的函数并定制加工的。

1、比如提取 @XxlJob 注解的函数,并注册到执行器

对Xxl-Job框架来说@XxlJob注解是已经存在的。适配,只需要注册一个Bean提取器即可:

 Aop.context().beanExtractorAdd(XxlJob.class, (bw, method, anno)->{
    //简单写下,以示意这个特性...
    //
    String name = anno.value();
    IJobHandler handler = new MethodJobHandler(bw.raw(), method, null, null);
    
    XxlJobExecutor.registJobHandler(name, handler);
 });

一顿简单操作,Bean里的函数已经变成Xxx-Job里job了。

2、应用

@Component
public class SampleXxlJob {
    /**
     * 1、简单任务示例(Bean模式)
     */
    @XxlJob("demoJobHandler")
    public void demoJobHandler() throws Exception {
        XxlJobHelper.log("XXL-JOB, Hello World.");

        for (int i = 0; i < 5; i++) {
            XxlJobHelper.log("beat at:" + i);
            TimeUnit.SECONDS.sleep(2);
        }
        // default success
    }


    /**
     * 2、分片广播任务
     */
    @XxlJob("shardingJobHandler")
    public void shardingJobHandler() throws Exception {

        // 分片参数
        int shardIndex = XxlJobHelper.getShardIndex();
        int shardTotal = XxlJobHelper.getShardTotal();

        XxlJobHelper.log("分片参数:当前分片序号 = {}, 总分片数 = {}", shardIndex, shardTotal);

        // 业务逻辑
        for (int i = 0; i < shardTotal; i++) {
            if (i == shardIndex) {
                XxlJobHelper.log("第 {} 片, 命中分片开始处理", i);
            } else {
                XxlJobHelper.log("第 {} 片, 忽略", i);
            }
        }

    }
}

如果你不喜欢这个注解,也可以很快换成像:@CloudJob。通过提取器,将Method注册到它的执行器里就OK。

版权声明:本文版权归作者所有,遵循 CC 4.0 BY-SA 许可协议, 转载请注明原文链接
https://www.cnblogs.com/noear/p/15810910.html

Solon 开发,八、注入依赖与初始化-编程思维

Solon 开发 一、注入或手动获取配置 二、注入或手动获取Bean 三、构建一个Bean的三种方式 四、Bean 扫描的三种方式 五、切面与环绕拦截 六、提取Bean的函数进行定制开发 七、自定义注解开发汇总 八、注入依赖与初始化 Solon 强调 有克制的注入 + 手动控制 结合的模式。好处是,代码用料少、启动快

Solon 开发进阶,一、插件扩展机制-编程思维

Solon 开发进阶 一、插件扩展机制 二、体外扩展机制 三、常用配置说明 四、启动参数说明 五、全局异常订阅 像 @Tran、@Cache 之类的注解开发成果,都会希望能在所有项目中复用。Solon Plugin 是一种解耦的插件扩展机制,简单、弹性、自由。类似 Spring Factories、Java Spi。

Solon 开发进阶,二、体外扩展机制-编程思维

Solon 开发进阶 一、插件扩展机制 二、体外扩展机制 三、常用配置说明 四、启动参数说明 五、全局异常订阅 Solon 的一个特色:体外扩展机制,用于解决 fatjar 模式部署时的扩展需求。比如: 把数据源配置文件放到体外,根据环境去调整 把一些模块做成扩展包放到体外 开发管理后台时,可以每个频道做成一个扩展包

Solon 开发,七、自定义注解开发汇总-编程思维

Solon 开发 一、注入或手动获取配置 二、注入或手动获取Bean 三、构建一个Bean的三种方式 四、Bean 扫描的三种方式 五、切面与环绕拦截 六、提取Bean的函数进行定制开发 七、自定义注解开发汇总 八、注入依赖与初始化 1、定义构建能力注解,比如@Controller //注册 @Controller

Solon 开发,五、切面与环绕拦截-编程思维

Solon 开发 一、注入或手动获取配置 二、注入或手动获取Bean 三、构建一个Bean的三种方式 四、Bean 扫描的三种方式 五、切面与环绕拦截 六、提取Bean的函数进行定制开发 七、自定义注解开发汇总 八、注入依赖与初始化 想要环绕拦截一个Bean的函数。需要三个前置条件: 通过注解做为切点,进行拦截(不能

Solon Web 开发-编程思维

Solon Web 开发 一、开始 二、开发知识准备 三、打包与运行 四、请求上下文 五、数据访问、事务与缓存应用 六、过滤器、处理、拦截器 七、视图模板与Mvc注解 八、校验、及定制与扩展 九、跨域处理 十、签权 十一、国际化 十二、统一的渲染控制 十三、WebSocket 十四、与Spring、Jsr330的常用注

Solon 开发,八、注入依赖与初始化-编程思维

Solon 开发 一、注入或手动获取配置 二、注入或手动获取Bean 三、构建一个Bean的三种方式 四、Bean 扫描的三种方式 五、切面与环绕拦截 六、提取Bean的函数进行定制开发 七、自定义注解开发汇总 八、注入依赖与初始化 Solon 强调 有克制的注入 + 手动控制 结合的模式。好处是,代码用料少、启动快

Solon 开发,七、自定义注解开发汇总-编程思维

Solon 开发 一、注入或手动获取配置 二、注入或手动获取Bean 三、构建一个Bean的三种方式 四、Bean 扫描的三种方式 五、切面与环绕拦截 六、提取Bean的函数进行定制开发 七、自定义注解开发汇总 八、注入依赖与初始化 1、定义构建能力注解,比如@Controller //注册 @Controller

Solon 开发,五、切面与环绕拦截-编程思维

Solon 开发 一、注入或手动获取配置 二、注入或手动获取Bean 三、构建一个Bean的三种方式 四、Bean 扫描的三种方式 五、切面与环绕拦截 六、提取Bean的函数进行定制开发 七、自定义注解开发汇总 八、注入依赖与初始化 想要环绕拦截一个Bean的函数。需要三个前置条件: 通过注解做为切点,进行拦截(不能

Java架构系列问题合集-目录-编程思维

接下来会做一个系列, 分类说明关于Java项目研发和架构工作需要了解的问题 Java语法 Java语法专题1: 类初始化的构造顺序 https://www.cnblogs.com/milton/p/15804995.html 描述一下多级继承中类的构造顺序 描述一下多级继承中字段初始化顺序 给定两段代码, 分别是父类和