[发明专利]一种基于ClassLoader的自定义类查找方法在审
申请号: | 201710971621.8 | 申请日: | 2017-10-18 |
公开(公告)号: | CN107656775A | 公开(公告)日: | 2018-02-02 |
发明(设计)人: | 袁炯钟;季统凯 | 申请(专利权)人: | 国云科技股份有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 北京科亿知识产权代理事务所(普通合伙)11350 | 代理人: | 汤东凤 |
地址: | 523808 广东省东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 classloader 自定义 查找 方法 | ||
技术领域
本发明涉及IT技术领域,特别是指一种基于ClassLoader的自定义类查找方法。
背景技术
随着信息系统的复杂性日益增大,使用反射机制设计的系统越来越多。根据不同的业务需要通过反射去获得相应的处理类的前提是如何获得类的信息。传统的方法有两种:第一种是使用配置文件的方式记录。这种方式在业务复杂性较大或者类比较多的时候,配置文件就显得不够灵活,不易于扩展、可维护性差。第二种是采用Jdk基础的反射类,通过扫描文件或jar包中的文件获取业务系统的处理类。这种方式实现比较简单也易于扩展,但缺点是只能扫描到处理程序外部的class文件或jar文件。对于嵌套的jar文件,由于不能在操作系统中识别为文件,导致此方法扫描的范围有局限性,对于普通的以jar方式运行的程序就无法使用。
发明内容
本发明解决的技术问题在于提供一种基于ClassLoader的自定义类查找方法,在整个类加载的范围内查找业务需要的类,提供了一种搜索范围广、灵活的、易于扩展的解决方案。
本发明解决上述技术问题的技术方案是:
所述的方法包括如下步骤:
步骤1:取得运行环境的ClassLoader;
步骤2:根据类路径查找类的URL;
步骤3:读取类的相关信息;
步骤4:根据类的自定义注解信息对类进行归类保存。
所述的运行环境的ClassLoader,通常是程序运行当前线程的类加载器,若当前线程没有定义则使用系统的类加载器。
所述的类路径是指识别一个类的基础路径,包括com/gcloud/cloud/adapter/xxx.class;
所述的类的URL是定位这个类在操作系统的文件路径或jar包中的路径,是资源的定位路径。
所述的类的相关信息主要是类的基础信息,包括类的名字,类的属性方法等信息。
所述的自定义注解是指用户根据系统业务需要定义的注解,能标记每个类在程序中的业务属性;
所述的对类进行归类保存,主要是根据业务属性的不同把相关信息保存在内存中,此内存信息作为全局的信息,能被系统所有逻辑引用。
本发明查找类的范围广,能查找普通文件的类、Jar包中的类和Jar包里面嵌套的Jar包中的类;本发明适用于Java语言开发的普通Java程序和Web程序,搜索类的范围广,能满足复杂的业务要求。其他面向对象语言若使用类似的ClassLoader管理类的也可参考此方法进行改造使用。
附图说明
下面结合附图对本发明进一步说明:
图1为本发明的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图并以实际开发案例作进一步详细说明。如图1所示,具体实施过程如下:
本样例根据本发明的原理,结合spring开源框架的部分工具类对类进行加载解析,最后把查找到的类保存在程序运行的内存中。
1、取得运行环境的ClassLoader。
下面三种方式可以取得ClassLoader,优先使用第一种获取本运行环境的ClassLoader
ClassLoader cl=Thread.currentThread().getContextClassLoader();
ClassLoader cl=XXXX.class.getClassLoader();
ClassLoader cl=ClassLoader.getSystemClassLoader();
2、根据类路径查找类的URL。
定义需要查找的类路径,支持*通配符
String packageSearchPath =
″classpath*:com/gcloud/cloud/adapter/**/*.class″;
根据指定的路径查找对应路径的所有类
PathMatchingResourcePatternResolver resolver=new
PathMatchingResourcePatternResolver();
Resource[]resources=resolver.getResources(packageSearchPath);
查找出来类的URL格式如下:
URL
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国云科技股份有限公司,未经国云科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710971621.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种高效平板硫化机主体装置
- 下一篇:一种智能手动葫芦