System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于计算机,尤其涉及一种基于ioc整合js与java的方法与装置。
技术介绍
1、随着产品的快速迭代,以及各种开发模型,“瀑布形”,“螺旋形”“快速迭代”等多种开发模型的衍生,市场上急需一个能快速搭建应用并投入使用的方案、或者平台,因此“低代码平台”应运而生。
2、作为“低”代码,在某些复杂功能中,避免不了写代码。js,这种解释性语言在此场景下作为不二之选。但是原始的js,功能比较单一,对于许多功能,都需要手动实现、或者复制一份代码。虽然es6,common-js的出现解决了这个问题。但是里面包含了特定对象,如“window”等,某些功能需要在特定环境才能运行,如浏览器。因此具备一定的局限性。
3、结合以上两点,第一、需要使用js,第二、js功能暂时不能满足,因此,需要结合js以及一种成熟的,“功能丰富”,可复用的“工具”相结合。
技术实现思路
1、鉴于以上现有技术的不足,专利技术的目的在于提供一种基于ioc整合js与java的方法与装置,基于graalvm多语言环境,结合spring ioc特性,整合js与java,使得java与js的相互调用更方便,灵活,高效。
2、本专利技术的第一方面,提出了一种基于ioc整合js与java的方法,包括:
3、s1,在java环境中编写js预设功能,将所述js预设功能注入spring容器;
4、s2,定义java函数配置类,依据所述java函数配置类从所述spring容器中
5、s3,配置js可访问的java对象,从所述spring容器中取出对应对象,保留在配置文件中;
6、s4,依据所述对应对象配置全局js对象,设置所述全局js对象的属性为java的引用;
7、s5,采用所述全局js对象拼接js代码,调用graalvm沙箱接口执行对应的java对象。
8、进一步地,所述s1中在java环境中编写js预设功能,将所述js预设功能注入spring容器还包括:
9、所述s1中在java环境中编写的js预设功能为在js中实现难度大于预设值的功能;
10、所述js预设功能至少包括:
11、分布式锁、redis缓存、本地缓存、多线程处理、表格数据读取、写入。
12、进一步地,所述s2中定义java函数配置类,依据所述java函数配置类从所述spring容器中获取容器对象,并保留所述java函数配置类的句柄,还包括:
13、定义java函数配置类,所述java函数配置类通过自动注入和对象获取方式,从所述spring容器获取想要提供给js代码调用的java方法或者可以访问的java类,并保留类的句柄;
14、所述句柄为与客户端js调用方约定,采用全局js对象执行调用方法。
15、进一步地,所述s3中配置js可访问的java对象,从所述spring容器中取出对应对象,保留在配置文件中,还包括:
16、解析定义的所述java函数配置类,获取里面从所述spring容器获取到的需要注入js引擎的对象和类。
17、进一步地,所述s5中采用所述全局js对象拼接js代码,调用graalvm沙箱接口执行对应的java对象,还包括:
18、获取到所述java函数配置类里面的所有对象或者静态类,按照约定的调用方法定义java对象和js代码的调用映射关系并获取所述java对象对应的js对象;
19、将所述js对象嵌套在用户写的自定义代码的起始位置,自定义代码里面用户通过约定的调用方法预置对象方法或者属性;
20、将拼接好的js代码,交由graalvm沙箱执行,在执行前,设置java访问白名单;
21、在执行过程中,如果遇到预设类型语句,则从js预置对象里面寻找相关的java对象,查找到相关的java对象后,调用对应的java方法;
22、调用完后继续执行其他js代码,完成整块自定义代码的执行。
23、根据本专利技术第二方面,本专利技术请求保护一种基于ioc整合js与java的装置,包括:
24、注入模块,在java环境中编写js预设功能,将所述js预设功能注入spring容器;
25、函数配置模块,定义java函数配置类,依据所述java函数配置类从所述spring容器中获取容器对象,并保留所述java函数配置类的句柄;
26、对象配置模块,配置js可访问的java对象,从所述spring容器中取出对应对象,保留在配置文件中;
27、引用配置模块,依据所述对应对象配置全局js对象,设置所述全局js对象的属性为java的引用;
28、对象执行模块,采用所述全局js对象拼接js代码,调用graalvm沙箱接口执行对应的java对象。
29、进一步地,所述注入模块,还包括:
30、在java环境中编写的js预设功能为在js中实现难度大于预设值的功能;
31、所述js预设功能至少包括:
32、分布式锁、redis缓存、本地缓存、多线程处理、表格数据读取、写入。
33、进一步地,所述函数配置模块,还包括:
34、定义java函数配置类,所述java函数配置类通过自动注入和对象获取方式,从所述spring容器获取想要提供给js代码调用的java方法或者可以访问的java类,并保留类的句柄;
35、所述句柄为与客户端js调用方约定,采用全局js对象执行调用方法。
36、进一步地,所述对象配置模块,还包括:
37、解析定义的所述java函数配置类,获取里面从所述spring容器获取到的需要注入js引擎的对象和类。
38、进一步地,所述对象执行模块,还包括:
39、获取到所述java函数配置类里面的所有对象或者静态类,按照约定的调用方法定义java对象和js代码的调用映射关系并获取所述java对象对应的js对象;
40、将所述js对象嵌套在用户写的自定义代码的起始位置,自定义代码里面用户通过约定的调用方法预置对象方法或者属性;
41、将拼接好的js代码,交由graalvm沙箱执行,在执行前,设置java访问白名单;
42、在执行过程中,如果遇到预设类型语句,则从js预置对象里面寻找相关的java对象,查找到相关的java对象后,调用对应的java方法;
43、调用完后继续执行其他js代码,完成整块自定义代码的执行。
44、本专利技术有益效果如下:
45、本专利技术在保障功能完善上、js与java通信方式不变。沙箱由nashorn替换为graalvm,可调用的java方法由静态方法扩展到所有方法。
46、在功能方面,该方案,由原本的静态方法本文档来自技高网...
【技术保护点】
1.一种基于ioc整合js与java的方法,其特征在于,包括:
2.根据权利要求1所述的一种基于ioc整合js与java的方法,其特征在于,所述S1中在java环境中编写js预设功能,将所述js预设功能注入spring容器还包括:
3.根据权利要求2所述的一种基于ioc整合js与java的方法,其特征在于,所述S2中定义java函数配置类,依据所述java函数配置类从所述spring容器中获取容器对象,并保留所述java函数配置类的句柄,还包括:
4.根据权利要求3所述的一种基于ioc整合js与java的方法,其特征在于,所述S3中配置js可访问的java对象,从所述spring容器中取出对应对象,保留在配置文件中,还包括:
5.根据权利要求3所述的一种基于ioc整合js与java的方法,其特征在于,所述S5中采用所述全局js对象拼接js代码,调用graalvm沙箱接口执行对应的java对象,还包括:
6.一种基于ioc整合js与java的装置,其特征在于,包括:
7.根据权利要求6所述的一种基于ioc整合j
8.根据权利要求7所述的一种基于ioc整合js与java的装置,其特征在于,所述函数配置模块,还包括:
9.根据权利要求8所述的一种基于ioc整合js与java的装置,其特征在于,所述对象配置模块,还包括:
10.根据权利要求9所述的一种基于ioc整合js与java的装置,其特征在于,所述对象执行模块,还包括:
...【技术特征摘要】
1.一种基于ioc整合js与java的方法,其特征在于,包括:
2.根据权利要求1所述的一种基于ioc整合js与java的方法,其特征在于,所述s1中在java环境中编写js预设功能,将所述js预设功能注入spring容器还包括:
3.根据权利要求2所述的一种基于ioc整合js与java的方法,其特征在于,所述s2中定义java函数配置类,依据所述java函数配置类从所述spring容器中获取容器对象,并保留所述java函数配置类的句柄,还包括:
4.根据权利要求3所述的一种基于ioc整合js与java的方法,其特征在于,所述s3中配置js可访问的java对象,从所述spring容器中取出对应对象,保留在配置文件中,还包括:
5.根据权利要求3...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。