Java动态执行可配置的逻辑

本文介绍如何在Java系统中动态执行存储于数据库内的Groovy脚本,通过GroovyScriptEngine实现脚本加载与执行的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

某些场景下Java系统里需要动态执行一段配置在数据库中(也可以是其他存储)的逻辑,仅仅基于Java是无法完成的,但可以通过集成Groovy来实现这个效果,尝试过程如下:

1)在数据库中配置脚本,表结构随意定义,例子如下:

2)Java中动态调存在于数据库里的groovy脚本(存在上表中的script字段里)

[java] view plain copy
  1. Filef=null;
  2. BufferedWriterbw=null;
  3. Connectioncon=null;
  4. try{
  5. Class.forName("com.mysql.jdbc.Driver");
  6. con=DriverManager.getConnection("jdbc:mysql://10.20.168.42:3306/cutemock","root","111111");
  7. Statementstmt=con.createStatement();
  8. ResultSetrs=stmt.executeQuery("SELECTscriptFROMmockwhereservice='"+
  9. serviceName+"'andmethod='"+methodName+"'");
  10. if(rs.next()){
  11. LOGGER.info("startrunscript:"+rs.getString("script"));
  12. f=File.createTempFile("gse",".groovy");
  13. bw=newBufferedWriter(newFileWriter(f));
  14. bw.write(rs.getString("script"));
  15. bw.flush();
  16. Bindingbinding=newBinding();
  17. GroovyScriptEnginegse=newGroovyScriptEngine(f.getParentFile().getName());
  18. Objectresult=gse.run(f.getName(),binding);
  19. hsfResponse.setAppResponse(result);
  20. returnhsfResponse;
  21. }
  22. }catch(Exceptione){
  23. LOGGER.error("rungroovyerror",e);
  24. }finally{
  25. try{
  26. if(bw!=null){
  27. bw.close();
  28. }
  29. if(f!=null){
  30. f.delete();
  31. }
  32. if(con!=null){
  33. con.close();
  34. }
  35. }catch(Exceptione2){
  36. //TODO:handleexception
  37. }
  38. }

上面代码比较简单,关键在于两点:

1)通过GroovyScriptEngine来执行groovy脚本

2)从数据库里load出groovy代码,并放入临时文件里,使其成为一段可执行的.groovy文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值