前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >本地没有第三方的jar如何在本地编码,并在生产环境调用该工具类?

本地没有第三方的jar如何在本地编码,并在生产环境调用该工具类?

作者头像
收心
修改2023-11-24 16:54:31
1490
修改2023-11-24 16:54:31
举报
文章被收录于专栏:Java实战博客Java实战博客

场景分析

直接说一个开发中遇到的一个场景。某方电网不允许使用Minio作为对象存储,部署在甲方服务器则需要使用甲方开发的对象存储组件(该组件假设命名AAA)。

由于开发环境均在本公司内网。本公司内网是无法部署甲方AAA系统,更拿不到文档提供的UpdateCilent工具类的jar包的。面对此场景。我们分析了3种解决方案!

1、使用第三方jar包。本地拿不出来,那就把本地开发完的代码、该项目的Maven依赖上传到甲方服务器,将项目导入甲方服务器编译器,并在甲方机器上打包。

2、抓取Rest API。AAA系统有后端管理系统。我们通过Rest抓包拿到后台管理系统的登录、认证信息,然后再抓包拿到AAA系统的上传、下载的Rest API。我们自己封装HttpUtil去调用ResAPI实现。

3、反射。我们在甲方服务器知道该工具类的class.forName需要的全限定类名、方法的参数。于是我们就可以使用反射代替new Util()的代码检查期间报错。实现思路:项目加一个配置文件,我们公司内网配置走Minio、甲方环境走反射调用方法。这样编译期间不会报错!

反射的实现方案

假设工具类叫Hello

代码语言:javascript
复制
package com.zanglikun.springdataredisdemo.test;

import lombok.Data;

@Data
public class Hello {
    public String fuckYou(String name) {
        System.out.println("You is " + name);
        return name;
    }
}

反射调用方法示例

代码语言:javascript
复制
public class ReflectionExample {
    @SneakyThrows
    public static void main(String[] args) {
        String className = "com.zanglikun.springdataredisdemo.test.Hello"; // 方法的全限定类名
        String methodName = "fuckYou"; // 方法名

        // 加载类
        Class<?> clazz = Class.forName(className);

        // 创建类的实例
        Object instance = clazz.getDeclaredConstructor().newInstance();

        // 获取方法
        Method method = clazz.getDeclaredMethod(methodName, String.class); // 注意这里要放方法参数。因为确定一个方法,知道方法名是无法满足方法重载的,所以必须要制定方法的所有参数

        // 调用方法
        Object result = method.invoke(instance, "张三");

        // 输出方法执行结果
        System.out.println("方法执行结果:" + result);
    }
}

特殊说明: 上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com 第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取全部资料 ❤

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 场景分析
  • 反射的实现方案
    • 假设工具类叫Hello
      • 反射调用方法示例
      相关产品与服务
      对象存储
      对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档