Addon和AddonUpgrader
上 《hello world》 章节中,我们已经了解到,一个最基本的java插件项目,但是为了方便起见,并没有凸显出 Addon
和 AddonUpgrader
这两个类的使用。
一个完整的 hello world 项目的目录结构应该如下:
jpress-addon-helloworld
├── pom.xml
└── src
├── main
│ ├── java
│ │ └── io
│ │ └── jpress
│ │ └── addon
│ │ └── helloworld
│ │ ├── HelloWorldAddon.java
│ │ ├── HelloWorldAddonController.java
│ │ ├── HelloWorldAddonHandler.java
│ │ ├── HelloWorldAddonInterceptor.java
│ │ └── HelloWorldUpgrader.java
│ ├── resources
│ │ ├── addon.txt
│ │ └── config.txt
│ └── webapp
│ └── helloworld
│ └── index.html
└── test
在源码中,可以看到有 HelloWorldAddon 和 HelloWorldUpgrader 这两个类,他们分别是:
- HelloWorldAddon:用于监听本插件在安装、卸载、启用和停止的动作,然后做对于的改变。
- HelloWorldUpgrader:用户监听本插件在升级的过程中进行操作。
他们的代码分别如下:
HelloworldAddon.java :
public class HelloWorldAddon implements Addon {
@Override
public void onInstall(AddonInfo addonInfo) {}
@Override
public void onUninstall(AddonInfo addonInfo) {}
@Override
public void onStart(AddonInfo addonInfo) {}
@Override
public void onStop(AddonInfo addonInfo) {}
}
onInstall()
: 用于在此插件被安装的时候执行,在这个插件的生命周期中只会执行一次,就是被安装的时候,在这个方法中,我们往往在这里创建需要的数据库表等。onUninstall()
:用于在此插件被卸载的时候执行,这这个操作的往往是和onInstall()
相反的,当onInstall()
创建表或其他资源,我们应该在onUninstall()
删除表或删除onInstall(
) 创建的资源。onStart()
:此方法用户可以在后台进行启动,当次插件被启动之后,以后只要重启容器比如tomcat、undertow等都会执行此方法。在此方法中,我们可以用来创建自己后台菜单、用户中心菜单等。onStop()
:和onStart()
相反,当在onStart()
创建的资源应该在onStop()
被销毁。
HelloWorldUpgrader.java :
public class HelloWorldUpgrader implements AddonUpgrader {
@Override
public boolean onUpgrade(AddonInfo oldAddon, AddonInfo thisAddon) {}
@Override
public void onRollback(AddonInfo oldAddon, AddonInfo thisAddon) {}
}
onUpgrade()
: 当用户在后台对插件进行升级的时候,JPress会调用新插件的HelloWorldUpgrader.onUpgrade()
方法,在此方法中,我们可以对修插件的表结构进行修改等操作。onRollback()
:当JPress调用新插件的onUpgrade()
的时候出现了异常、或者此方法返回false
,证明此插件安装失败,JPress会对整个插件进行回退到上一个版本,并会调用新插件的onRollback()
方法。
备注:
HelloWorldAddon 和 HelloWorldAddonUpgrader 都不是必须的,当他们不存在的时候,JPress 在安装、卸载、升级等都不会执行该插件的任何方法。