返回顶部
首页 > 资讯 > 后端开发 > JAVA >Java中轻量级规则引擎Groovy介绍
  • 596
分享到

Java中轻量级规则引擎Groovy介绍

java开发语言 2023-09-02 07:09:36 596人浏览 安东尼
摘要

一、场景描述 假如在开发一个充值功能,需要支持经常变化的充值营销活动,产品提出了以下需求: 根据不同季节,不同节日做不同的充值送活动,以及不定期的优惠活动。 还需要根据用户的等级以及用户以往的充值历史做不同的营销活动。 能够灵活的配置营销活

一、场景描述

假如在开发一个充值功能,需要支持经常变化的充值营销活动,产品提出了以下需求:

根据不同季节,不同节日做不同的充值送活动,以及不定期的优惠活动。

还需要根据用户的等级以及用户以往的充值历史做不同的营销活动。

能够灵活的配置营销活动

需求很简单就是需要研发能够灵活的满足各种不同的营销活动配置,该如何实现了?目前大致有以下几种方式:

每次营销活动的调整,通过代码的调整,测试成功后发布。

通过数据库提前想好各种可能的营销活动规则,把营销活动规则存放在数据库中。此种方式能够满足绝大多数需求,但是如果是新的营销规则或者是之前没有的计算规则,则需要进行代码调整,测试成功后发布。

使用规则引擎,把每次营销活动的规则,通过脚本来计算,并输出计算结果返回给程序。只要提前规范好规则引擎计算脚本的入参和出参等,即可在不修改程序代码,无需重新发布程序的情况下配置营销活动。

要实现灵活的营销策略配置,最佳选择肯定是规则引擎

Java中有很多不同类型的规则引擎,免费的收费的,轻量级的重量级的,今天就给大家介绍一个免费的轻量级的规则引擎,并且规则脚本直接可以在java代码中运行,非常方便,即插即用,名字就叫做:groovy

二、Groovy简介

  1. 动态性:单纯的java语言是不具有动态性的,groovy恰恰弥补了这一缺憾,有了groovy你可以在程序运行时任意修改代码逻辑,不需要重新发布;
  2. 脚本简单易用:groovy在语法上兼具java 语言和脚本语言特点,大大简化了语法,有丰富的语法,对于Java开发者非常友好;
  3. 与Java兼容性强:可以无缝衔接Java代码,可以调用Java所有的库。可以在Groovy脚本中使用Java代码,兼容率高达90%,除了lambda、数组语法,其他Java语法基本都能兼容;
  4. 技术成熟,功能强大,易于使用维护,性能稳定;

三、Groovy与Java的集成

Java中运行Groovy,有三个比较常用的类支持:GroovyClassLoader、Groovyshell和GroovyScriptEngine

GroovyClassLoader
用 Groovy 的 GroovyClassLoader ,它会动态地加载一个脚本并执行它。GroovyClassLoader是一个Groovy定制的类装载器,负责加载解析Groovy脚本类。

GroovyShell
GroovyShell允许在Java类中(甚至Groovy类)求任意Groovy表达式的值。您可使用Binding对象输入参数给表达式,并最终通过GroovyShell返回Groovy表达式的计算结果。

GroovyScriptEngine
GroovyShell多用于推求对立的脚本或表达式,如果换成相互关联的多个脚本,使用GroovyScriptEngine会更好些。GroovyScriptEngine从您指定的位置(文件系统,URL,数据库,等等)加载Groovy脚本,并且随着脚本变化而重新加载它们。

Maven的pom依赖

    groovyorg.codehaus.groovy2.5.8compile

GroovyShell为例来介绍java代码与groovy脚本的集成

简单的表达式执行,向script中传递参数

获取script内部定义的变量值

获取script中方法执行结果的返回值

public static void main(String[] args) throws Exception {Binding binding = new Binding();      GroovyShell shell = new GroovyShell(binding);            //向script中传递变量      binding.setVariable("name", "Groovy");      shell.evaluate("println 'Hello World! I am ' + name;");          //获取script内部定义变量值    shell.evaluate("date = new Date();");      Date date = (Date)binding.getVariable("date");      System.out.println("Date:" + date.getTime());          //获取script脚本执行返回值    binding.setVariable("list", new String[]{"A","B","C"});      String joinString = (String)shell.evaluate("def call(){return list.join(' - ')};call();");      System.out.println("Array join:" + joinString);            shell = null;      binding = null;  }

实际运用中,都会把活动的计算规则采用脚本script的方式,灵活设置,并把脚本存放中数据库中。

来源地址:https://blog.csdn.net/m0_37258559/article/details/131228337

--结束END--

本文标题: Java中轻量级规则引擎Groovy介绍

本文链接: https://lsjlt.com/news/390121.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java中轻量级规则引擎Groovy介绍
    一、场景描述 假如在开发一个充值功能,需要支持经常变化的充值营销活动,产品提出了以下需求: 根据不同季节,不同节日做不同的充值送活动,以及不定期的优惠活动。 还需要根据用户的等级以及用户以往的充值历史做不同的营销活动。 能够灵活的配置营销活...
    99+
    2023-09-02
    java 开发语言
  • Java规则引擎easy-rules详细介绍
    目录简介开始使用引入依赖定义规则使用注解定义规则使用RuleBuilder定义规则组合规则规则优先级Rules API定义事实定义规则引擎创建规则引擎规则引擎参数定义规则监听器定义规...
    99+
    2024-04-02
  • java中有哪些规则引擎
    这期内容当中小编将会给大家带来有关java中有哪些规则引擎,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了面向对...
    99+
    2023-06-14
  • java中的规则引擎是什么
    今天就跟大家聊聊有关java中的规则引擎是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3....
    99+
    2023-06-14
  • 【表达式引擎】简单高效的轻量级Java表达式引擎:Aviator
    简单高效的轻量级表达式引擎:Aviator 前言 Aviator 是一个高性能、、轻量级的表达式引擎,支持表达式动态求值。其设计目标为轻量级和高性能,相比于 Groovy 和 JRuby 的笨重,...
    99+
    2023-09-09
    java 数据库 spring boot
  • 关于java中变量命名规范的详细介绍
    Java是一种区分字母的大小写的语言,所以我们在定义变量名的时候应该注意区分大小写的使用和一些规范,接下来我们简单的来讲讲Java语言中包、类、变量等的命名规范。(一)Package(包)的命名Package的名字应该都是由一个小写单词组成...
    99+
    2019-10-05
    java入门 java 变量 命名规范 介绍
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作