System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于自定义接口和注解的动态生成控制器的方法技术_技高网

基于自定义接口和注解的动态生成控制器的方法技术

技术编号:40420074 阅读:8 留言:0更新日期:2024-02-20 22:38
本发明专利技术公开了基于自定义接口和注解的动态生成控制器的方法,其特征在于,包括以下步骤:S1、设备运检:检查系统搭建设备中动态识别设备、通讯设备、接口模块、控制器及输入设备是否建立可靠连接;S2、接口定义:定义服务接口,在定义后的服务接口上增加服务接口注解Fusion Service,并设置访问路径;S3、接口方法注解:在传统接口方法上增加接口方法Fusion Operation注解,并设置访问路径、方法描述以及数据请求方式;S4、Spring启动:新建类实现服务接口,该控制器生成方法直接在服务接口类以及其方法上添加自定义注解,注解里生成代理类实现控制器的作用,采用动态生成的方式自动生成,这样控制器就不用再手动编写,可以大大减少代码的编写量,降低编码出错机率。

【技术实现步骤摘要】

本专利技术涉及控制器通信,具体为基于自定义接口和注解的动态生成控制器的方法


技术介绍

1、传统spring mvc开发中,开发人员必须开发控制器controller,开发步骤大体如下:首先配置映射路径,根据路径匹配到控制器中的方法,然后在方法中再调用service层,最后再转向页面(view)或者输出返回值,步骤比较繁琐,排查问题也比较麻烦。对于稍大的项目来说,控制器部分的代码维护起来也不方便。而在前后端分离的情况下,控制器层不用再承担跳转页面的任务,因此传统方式在这种情况下显得有点过于繁琐。基于上述问题,考虑将控制器编写这块进行动态代码自动生成。

2、现有的控制器生成方式工作流程相对繁琐复杂,排查问题麻烦,不便于后期的维护。


技术实现思路

1、本专利技术的目的在于提供基于自定义接口和注解的动态生成控制器的方法,以解决上述
技术介绍
中提出的现有的控制器生成方式工作流程相对繁琐复杂,排查问题麻烦,不便于后期的维护的问题。

2、为此,本专利技术提供了基于自定义接口和注解的动态生成控制器的方法,包括以下步骤:

3、s1、设备运检:检查系统搭建设备中动态识别设备、通讯设备、接口模块、控制器及输入设备是否建立可靠连接;

4、s2、接口定义:定义服务接口,在定义后的服务接口上增加服务接口注解fusionservice,并设置访问路径;

5、s3、接口方法注解:在传统接口方法上增加接口方法fusion operation注解,并设置访问路径、方法描述以及数据请求方式;

6、s4、spring启动:新建类实现服务接口,启动spring,查找实现bean definitionregistry post processor 的spring启动扩展类中的fusion rest bean postprocessor;

7、s5、查找:扫描classpath,在fusion rest bean post processor路径下下扫描所有类型接口定义,查找接口类型中带有fusion serice注解的接口定义;

8、s6、调用:根据接口名称拼上controller产生动态类名,利用byte buddy的name方法生成动态类,subclass方法指定其父类,根据匹配的接口创建动态实现类接口,动态类添加spring mvc的request mapping的类注解;

9、s7、注入控制器:添加方法调用proxy handler,利用make方法生成字节码,利用load方法将生成字节码加载到jvm中,使用register singleton方法将其注入spring容器中。

10、优选的,所述s2步骤中,根据url请求匹配到对应映射路径的接口,自动执行对应service方法,生成控制器类简单地说就是生成的类上带有 controller、request mapping注解,映射的方法上添加request mapping、response body注解,参数上使用了requestbody注解方法,参数按需添加注解content-type=application/json的请求。

11、优选的,所述s1步骤中动态识别设备用于扫描记录接口模块中接入设备的访问频率,并识别访问频率的种类,其中访问的频率种类包括高频访问信号、中频访问信号和低频访问信号。

12、优选的,所述s6步骤中,动态类添加method代理handler。

13、优选的,所述注解定义是个二维数组,第一维表示第几个参数,第二维表示该参数的第几个注解。

14、优选的,所述方法应用于包含多个服务单元的微服务架构中,服务端属于微服务架构。

15、优选的,所述s7步骤中,注入控制器的方式还可以为:使用xml自定义标签的方式注入控制器,在springmvc.xsd的限定文件中,context name space handler继承namespace handler support类,用于解析自定义标签,controller bean definition parser实现bean definition parser接口,用于注入bean,通过root.set bean class(controller register factory.regist(c))将动态生成的controller类设置为bean,然后注入到spring容器。

16、优选的,所述s7步骤中,注入控制器的方式还可是:基于application contextaware来获取application context的引用,然后基于application context进行对象的动态获取,之后就可以直接在代码中动态获取所需要的bean,然后将bean注入到spring容器。

17、本专利技术提出的基于自定义接口和注解的动态生成控制器的方法,其有益效果在于:

18、1、该控制器生成方法直接在服务接口类以及其方法上添加自定义注解,注解里生成代理类实现控制器的作用,采用动态生成的方式自动生成,这样控制器就不用再手动编写,可以大大减少代码的编写量,降低编码出错机率;

19、2、将接口定义跟控制器配置整合,减少一个控制器类定义,减少开发配置步骤,提升开发效率,简化开发配置流程,更加简洁,便于后期排查问题及维护;

20、3、基于byte man动态类生成技术,比起jdk动态代理、cglib使用上更灵活,性能上有一定优势,框架级别的处理,开发按照规范,无需额外处理,可实现快速高效的服务器开发。

本文档来自技高网...

【技术保护点】

1.基于自定义接口和注解的动态生成控制器的方法,其特征在于:包括以下步骤:

2.根据权利要求1所述的基于自定义接口和注解的动态生成控制器的方法,其特征在于:所述S2步骤中,根据url请求匹配到对应映射路径的接口,自动执行对应Service方法,生成控制器类简单地说就是生成的类上带有 Controller、Request Mapping注解,映射的方法上添加Request Mapping、Response Body注解,参数上使用了Request Body注解方法,参数按需添加注解Content-Type=application/json的请求。

3.根据权利要求1所述的基于自定义接口和注解的动态生成控制器的方法,其特征在于:所述S1步骤中动态识别设备用于扫描记录接口模块中接入设备的访问频率,并识别访问频率的种类,其中访问的频率种类包括高频访问信号、中频访问信号和低频访问信号。

4.根据权利要求1所述的基于自定义接口和注解的动态生成控制器的方法,其特征在于:所述S6步骤中,动态类添加method代理Handler。

5.根据权利要求1所述的基于自定义接口和注解的动态生成控制器的方法,其特征在于:所述注解定义是个二维数组,第一维表示第几个参数,第二维表示该参数的第几个注解。

6.根据权利要求1所述的基于自定义接口和注解的动态生成控制器的方法,其特征在于:所述方法应用于包含多个服务单元的微服务架构中,服务端属于微服务架构。

7.根据权利要求1所述的基于自定义接口和注解的动态生成控制器的方法,其特征在于:所述S7步骤中,注入控制器的方式还可以为:使用xml自定义标签的方式注入控制器,在springmvc.xsd的限定文件中,Context Name space Handler继承Name space HandlerSupport类,用于解析自定义标签,Controller Bean Definition Parser实现BeanDefinition Parser接口,用于注入Bean,通过root.set Bean Class (ControllerRegister Factory.regist(c))将动态生成的Controller类设置为Bean,然后注入到Spring容器。

8.根据权利要求1所述的基于自定义接口和注解的动态生成控制器的方法,其特征在于:所述S7步骤中,注入控制器的方式还可是:基于Application Context Aware来获取Application Context的引用,然后基于Application Context进行对象的动态获取,之后就可以直接在代码中动态获取所需要的Bean,然后将Bean注入Spring容器。

...

【技术特征摘要】

1.基于自定义接口和注解的动态生成控制器的方法,其特征在于:包括以下步骤:

2.根据权利要求1所述的基于自定义接口和注解的动态生成控制器的方法,其特征在于:所述s2步骤中,根据url请求匹配到对应映射路径的接口,自动执行对应service方法,生成控制器类简单地说就是生成的类上带有 controller、request mapping注解,映射的方法上添加request mapping、response body注解,参数上使用了request body注解方法,参数按需添加注解content-type=application/json的请求。

3.根据权利要求1所述的基于自定义接口和注解的动态生成控制器的方法,其特征在于:所述s1步骤中动态识别设备用于扫描记录接口模块中接入设备的访问频率,并识别访问频率的种类,其中访问的频率种类包括高频访问信号、中频访问信号和低频访问信号。

4.根据权利要求1所述的基于自定义接口和注解的动态生成控制器的方法,其特征在于:所述s6步骤中,动态类添加method代理handler。

5.根据权利要求1所述的基于自定义接口和注解的动态生成控制器的方法,其特征在于:所述注解定义是个二维数组,第一维表示第几个参数,第二维表示该参数的第几个注解。

6.根据权利要求1所述的基于自定义接...

【专利技术属性】
技术研发人员:张元访陈胜孙萦飞汤泽波
申请(专利权)人:江苏富深协通科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1