Addon和AddonUpgrader

《hello world》 章节中,我们已经了解到,一个最基本的java插件项目,但是为了方便起见,并没有凸显出 AddonAddonUpgrader 这两个类的使用。

一个完整的 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 在安装、卸载、升级等都不会执行该插件的任何方法。

加入VIP


如果你想系统学习JPress涉及到的知识点,或者希望有人解答你在深度使用JPress时遇到问题,加入VIP是个很不错的选择

立马 了解一下