首页 > 其他分享 >探索 cola 扩展组件的应用

探索 cola 扩展组件的应用

时间:2024-11-02 15:58:31浏览次数:1  
标签:execute 探索 UserExtPt void context 组件 public cola

一、痛点

在日常开发中,不想通过写一堆if...else...实现业务逻辑判断,使得代码越来越长难以维护,又不想每次都用编码形式在 Spring 中实现策略模式。要是有一个组件能通过注解配置,同时还能支持多个维度的策略判断就简单了。

二、如何解决

在学习 cola 框架时,发现 cola 扩展组件能通过注解的形式实现不同策略扩展。在注解盛行的当下,非常合适。

三、案例

1.添加依赖

<dependency>
    <groupId>com.alibaba.cola</groupId>
    <artifactId>cola-component-extension-starter</artifactId>
    <version>4.3.2</version>
</dependency>

2.定义扩展点

实现 com.alibaba.cola.extension.ExtensionPointI 声明一个扩展点

public interface UserExtPt extends ExtensionPointI {

    /**
     * @param context 请求上下文
     */
    void execute(UserContext context);
}

3.实现扩展点

@Slf4j
@Extension(bizId = "user1")
public class User1Ext implements UserExtPt {

      /**
     * @param context 请求上下文
     */
    void execute(UserContext context){
        // 实现业务逻辑
    }
    
}
@Slf4j
@Extension(bizId = "user2")
public class User2Ext implements UserExtPt {

      /**
     * @param context 请求上下文
     */
    void execute(UserContext context){
        // 实现业务逻辑
    }
    
}
@Slf4j
@Extension(bizId = "user3")
public class User3Ext implements UserExtPt {

      /**
     * @param context 请求上下文
     */
    void execute(UserContext context){
        // 实现业务逻辑
    }
    
}

4.使用

@Component
@Slf4j
public class UserCmdExe {

    @Resource
    private ExtensionExecutor extensionExecutor;

    public void execute(UserContext context) {
        /**
         * BizScenario.valueOf("user1") 对应 @Extension(bizId = "user1") 注解里的声明
         * 支持多个维度和数组,
,         */
        extensionExecutor.executeVoid(UserExtPt.class,
                                      BizScenario.valueOf("user1"),
        extension -> extension.execute(context));

}


参考:https://blog.csdn.net/yangyanping20108/article/details/134968496

标签:execute,探索,UserExtPt,void,context,组件,public,cola
From: https://www.cnblogs.com/wallacepang/p/18522110

相关文章

  • CRON组件一个复杂的一个简单的
    CRON组件一个复杂的一个简单的一个是复杂点的一个是简单点。1.以简单的为例使用:父组件importCronSimplefrom"@/views/xxx/components/cron-simple/index.vue";components:{CronSimple}<el-dialogtitle="调度CRON"v-if="cronVisi......
  • 「Mac畅玩鸿蒙与硬件16」鸿蒙UI组件篇6 - List 和 Grid 组件展示数据列表
    List和Grid是鸿蒙开发中的核心组件,用于展示动态数据。List适合展示垂直或水平排列的数据列表,而Grid则适用于展示商品或图片的网格布局。本篇将展示如何封装组件,并通过按钮实现布局切换,提升界面的灵活性和用户体验。关键词List组件Grid组件数据展示自定义列......
  • 智慧国土空间规划方法探索与实践应用
    在数字化时代背景下,国土空间规划正经历着一场深刻的变革。智慧国土空间规划作为一种新兴的规划理念和方法,其核心在于利用现代信息技术,提高规划的科学性、精准性和动态适应性。本文将探讨智慧国土空间规划的方法探索与实践应用。1.智慧国土空间规划的概念智慧国......
  • Web组件之 Listener (监听器)
    文章目录1.1Listener概述1.2Listener快速入门①xml版本②注解版本1.3案例:模拟spring框架1.1Listener概述​JavaWeb中的监听器是监听ServletContextHttpSessionHttpServletRequest三个数据域对象创建和销毁以及监听数据域对象中数据的变化,就是监听......
  • 盲盒小程序开发,探索盲盒新乐趣
    今年以来,盲盒持续保持着上升发展的态势,市场热度不断,各大社交媒体上关于盲盒的讨论度也是居高不下,面对盲盒带来的经济效益。不少企业都纷纷加入到了盲盒赛道中,市场发展空间不断扩大!在科技的支持下,盲盒销售模式得到了创新,向数字化发展,让消费者通过互联网就可以获得心仪的盲盒商品。盲......
  • 璞华AI大模型应用的探索之路:从AI大模型开发与运营平台到应用宝库的最佳实践
    引言在人工智能快速发展的今天,AI大模型正逐渐成为各行各业数智化转型升级的核心动力。作为AI领域的探索者,璞华科技以“帮助客户实现数智化转型升级”为愿景,以强大的AI大模型开发与运营平台为基础,不断探索和验证AI大模型在实际业务应用中的可能性,推动企业的数智化转型升级,帮助企......
  • vue自定义组件实现v-model双向数据绑定
    一、Vue2 实现自定义组件双向数据绑定①v-model 实现双向数据绑定 在vue2中,子组件上使用v-model的值默认绑定到子组件的props.value属性上,由于子组件不能改变父组件传来的属性,所以需要通过$emit触发事件使得父组件中数据的变化,然后再同步到子组件。vue2默认触发v-model......
  • RTX5/FreeRTOS全家桶源码工程综合实战模板集成CANopen组件(2024-10-30)
    【前言】之前的视频教程分享了两期CANopen的专题,配套的例子都是基于裸机的,为了方便大家在OS下使用,本期视频带OS下的支持。CANopen协议栈专题,实战方式系统了解NMT,PDO,SDO,时间戳,同步报文,紧急报文等(2023-10-17)https://www.armbbs.cn/forum.php?mod=viewthread&tid=121438CANopen......
  • 开发 react 技术栈的前台项目,选用 semantic-ui-react 组件库是否是较好的选择
    在前端开发中,合适的UI组件库的选择至关重要,它能在保证交互和视觉一致性的同时,大大提升开发效率。Semantic-UI-React是React技术栈中备受关注的UI组件库之一,以其丰富的组件和友好的API受到了许多开发者的欢迎。然而,是否选择它作为项目的UI组件库需结合多个因素综合考虑......
  • 视频播放组件中,样式全屏和全屏的区别是什么?
    在视频播放组件中,"样式全屏"和"全屏"是两种不同的显示模式,它们的主要区别在于显示范围和用户体验。以下是详细的解释:样式全屏(PseudoFullscreen)显示范围:样式全屏通常是指在当前网页中最大化视频播放器的显示区域,但不会覆盖整个浏览器窗口。视频播放器会扩展到其父容器的最......