实现整个过程需要三个部分,第一就是根接口,第二是插件,第三是应用程序。这是3个java项目。

首先要下载jar包,百度搜索maven repository,然后搜索pf4j,如下图,下载第一个的相应版本就可以,我用的是1.2

然后,创建根节点项目,

package com.wgn.test1;

import ro.fortsoft.pf4j.ExtensionPoint;

/*
* 根接口,继承ExtensionPoint
* 将该项目打成jar包,放到plugin项目的lib文件夹下,然后构建配置路径
*/
public interface Testpf4j extends ExtensionPoint {
public void hello();
}

第三,创建插件项目,并将根接口项目打成jar包,放到插件项目的lib目录下,构建路径

package com.wgn.test2;

import com.wgn.test1.Testpf4j;

import ro.fortsoft.pf4j.Extension;
import ro.fortsoft.pf4j.Plugin;
import ro.fortsoft.pf4j.PluginWrapper; public class Testpf4jImpl extends Plugin { public Testpf4jImpl(PluginWrapper wrapper) {
super(wrapper);
} @Override
public void start() {
System.out.println("----------------------start");
} @Override
public void stop() {
System.out.println("----------------------stop");
} /*
* 必须添加static修饰符
*/
@Extension
public static class Testpf4jImpls implements Testpf4j { @Override
public void hello() {
System.out.println("hello world!");
} }
}

MANIFEST.MF:

Manifest-Version: 1.0
Plugin_Dependencies:
Implementation-Title: Demo Plugin #2
Implementation-Version: 1.2.0
Archiver-Version: Plexus Archiver
Built-By: root
Specification_Title: Demo Plugin #2
Implementation-Vendor-Id: com.wgn.test1.Testpf4j
Plugin-Version: 0.0.1
Plugin-Id: plugin01
Plugin-Provider: Decebal Suiu
Plugin-Class: com.wgn.test2.TestPf4jImpl
Build-dk: 1.8.0_102
Specification-Version; 1.2.0

extensions.idx:

com.wgn.test2.Testpf4jImpl$Testpf4jImpls

最后,新建程序项目,将插件放入plugins目录下,根接口放入lib目录下

package com.wgn.test2;

import com.wgn.test1.Testpf4j;

import ro.fortsoft.pf4j.Extension;
import ro.fortsoft.pf4j.Plugin;
import ro.fortsoft.pf4j.PluginWrapper; public class Testpf4jImpl extends Plugin { public Testpf4jImpl(PluginWrapper wrapper) {
super(wrapper);
} @Override
public void start() {
System.out.println("----------------------start");
} @Override
public void stop() {
System.out.println("----------------------stop");
} /*
* 必须添加static修饰符
*/
@Extension
public static class Testpf4jImpls implements Testpf4j { @Override
public void hello() {
System.out.println("hello world!");
} }
}

pf4j实例 插件框架的更多相关文章

  1. (2)从实际项目谈起,基于MEF的插件框架之总体设计

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.MEF框架简介 MEF的全称是Managed Extensibil ...

  2. [转]C/C++:构建你自己的插件框架

    本文译自Gigi Sayfan在DDJ上的专栏文章.Gigi Sayfan是北加州的一个程序员,email:gigi@gmail.com. 本文是一系列讨论架构.开发和部署C/C++跨平台插件框架的文 ...

  3. 基于MEF的插件框架之总体设计

    基于MEF的插件框架之总体设计 1.MEF框架简介 MEF的全称是Managed Extensibility Framework(MEF),其是.net4.0的组成部分,在3.5上也可以使用.熟悉ja ...

  4. MapReduce实例&YARN框架

    MapReduce实例&YARN框架 一个wordcount程序 统计一个相当大的数据文件中,每个单词出现的个数. 一.分析map和reduce的工作 map: 切分单词 遍历单词数据输出 r ...

  5. 一个.NET Core下的开源插件框架

    插件模式历史悠久,各种中大型软件基本上都会实现插件机制,以此支持功能扩展,从开发部署层面,插件机制也可实现功能解耦,对于并行开发.项目部署.功能定制等都有比较大的优势. 在.NET Core下,一般我 ...

  6. 分享在Linux下使用OSGi.NET插件框架快速实现一个分布式服务集群的方法

    在这篇文章我分享了如何使用分层与模块化的方法来设计一个分布式服务集群.这个分布式服务集群是基于DynamicProxy.WCF和OSGi.NET插件框架实现的.我将从设计思路.目标和实现三方面来描述. ...

  7. [转]仿World Wind构造自己的C#版插件框架——WW插件机制精简改造

    很久没自己写东西啦,早该好好总结一下啦!一个大师说过“一个问题不应该被解决两次!”,除了一个好脑筋,再就是要坚持总结. 最近需要搞个系统的插件式框架,我参照World Wind的插件方式构建了个插件框 ...

  8. 终于可以发布Delphi下收点OSGI精髓皮毛而设计的插件框架WisdomPluginFramework

    这是一个Delphi实现的插件框架,我耗费了相当相当相当多的精力来设计她,虽然仅闪着点我微薄智慧的光芒,但我还是决定用Wisdom来命名她,也因它是我绝无仅有的,在完成1年多后回头来看仍能相当满意的作 ...

  9. 基于Proxy思想的Android插件框架

    意义 研究插件框架的意义在于下面几点: 减小安装包的体积,通过网络选择性地进行插件下发 模块化升级.减小网络流量 静默升级,用户无感知情况下进行升级 解决低版本号机型方法数超限导致无法安装的问题 代码 ...

随机推荐

  1. Celery-4.1 用户指南: Periodic Tasks (定时任务)

    简介 celery beat 是一个调度器:它以常规的时间间隔开启任务,任务将会在集群中的可用节点上运行. 默认情况下,入口项是从 beat_schedule 设置中获取,但是自定义的存储也可以使用, ...

  2. python学习笔记(一):python简介和入门

    最近重新开始学习python,之前也自学过一段时间python,对python还算有点了解,本次重新认识python,也算当写一个小小的教程.一.什么是python?python是一种面向对象.解释型 ...

  3. 第十章 深入理解Session与Cookie

    理解Cookie 理解Session Cookie安全问题 分布式Session框架 Cookie压缩 表单重复提交问题 多终端Session统一

  4. PHP实现常用排序算法(含示意动图)

    目录 1 快速排序 2 冒泡排序 3 插入排序 4 选择排序 5 归并排序 6 堆排序 7 希尔排序 8 基数排序 总结 作为phper,一般接触算法的编程不多. 但基本的排序算法还是应该掌握. 毕竟 ...

  5. myeclipse与eclipse的web项目部署区别

    一.myeclipse之web项目的部署(发布)流程 web项目的部署(发布)流程2008-01-18 14:35 在myeclipse下新建web工程abc.系统设置默认如下: 项目保存位置:wor ...

  6. 最全 C 语言常用算法详解-排序-队列-堆栈-链表-递归-树 (面试有用)

    具体 源代码 案例查看github,持续更新中............ github地址:https://github.com/Master-fd/C-Algorithm 1. 二分法查找 2. 冒泡 ...

  7. gridcontrol 添加行号

    private void gridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndic ...

  8. hadoop-2.6.0.tar.gz + spark-1.6.1-bin-hadoop2.6.tgz + zeppelin-0.5.6-incubating-bin-all.tgz(master、slave1和slave2)(博主推荐)(图文详解)

    不多说,直接上干货! 我这里,采取的是CentOS6.5,当然大家也可以在ubuntu 16.04系统里,这些都是小事 CentOS 6.5的安装详解 hadoop-2.6.0.tar.gz + sp ...

  9. solr :term 查询, phrase查询, boolean 查询

    搜索总体有:term 查询, phrase查询, boolean 查询 1. SOLR搜索覆盖度和准确度保证的三个搜索方式: 保证准确率: AND: Search for two different ...

  10. day17 14.dao模式介绍

    Web的三层架构,不是MVC,Web层,Service层,DAO层. 之前玩的JSP Servlet JavaBean那是MVC模式,那玩意只是表现层的东西. 转账汇款的例子. 说了这么多有啥用啊,一 ...