欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

java动态加载插件化编程详解

时间:2020-12-18 01:35:23|栏目:JAVA代码|点击:

前言

对于java程序员来说,插件化是一件很酷的功能,小二有幸在工作中实现了此功能。

背景:

需要将mysql的数据通过canal同步至kafka/mysql/hdfs等

实现

/**
 * Created by shengjk1 on 2017/12/11
 */
public class PluginManager {
  private final static Logger logger = LoggerFactory.getLogger(SendMessageFactory.class);

  private URLClassLoader urlClassLoader;

  public PluginManager(List<Plugin> plugins) throws MalformedURLException {
    init(plugins);
  }
  //将所有插件动态加载至JVM中
  private void init(List<Plugin> plugins) throws MalformedURLException {
    int size = plugins.size();
    URL[] urls = new URL[size];
    for (int i = 0; i < size; i++) {
      Plugin plugin = plugins.get(i);
      String filePath = plugin.getJar();
      urls[i] = new URL("file:" + filePath);
    }
    urlClassLoader = new URLClassLoader(urls);
  }

  public PluginService getInstance(String className) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
    // 插件实例化对象,得到每一个插件具体的对象
    Class<?> clazz = urlClassLoader.loadClass(className);
    Object instance = clazz.newInstance();
    return (PluginService) instance;
  }
}

然后就可以进行插件的调用了。

上一篇:Java实现简易俄罗斯方块

栏    目:JAVA代码

下一篇:Java基于Lock的生产者消费者模型示例

本文标题:java动态加载插件化编程详解

本文地址:http://www.codeinn.net/misctech/34003.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有