Confluence插件开发 - 2 - 系统事件监听

注:阅读此篇时,请确保你的开发环境已经正常配置,可以正常使用命令行工具创建插件demo

简介

此篇文章介绍Confluence插件中如何使用Confluence系统事件,定制扩展功能。通过系统暴露的event事件,获取回调定制逻辑。需要注意的是通过事件订阅的方式扩展功能前提是,Confluence系统有暴露的event。

事件注意事项(重要)

  • 事件机制没有循环监测事件触发的机制,所以事件监听器内需要注意不要导致循环事件,举例:一个监听SpaceModifiedEvent事件的listener,逻辑代码中不能产生SpaceModifiedEvent事件
  • 监听器listener需要实现spring bean生命周期管理接口InitializingBean和DisposableBean,当整个插件启用或者禁用的时候会触发对应的afterPropertiesSet和destroy方法
  • 事件机制触发的操作都是同步操作,所以你需要保证你的监听器逻辑尽可能快速处理完成,不要影响整个系统的操作(十分重要)

创建一个简单的监听器

  • 类需要增加@Scanner注解
  • 使用@ComponentImport注解导入依赖的系统处理类
  • 使用@Autowried注释构造器
  • 在方法上增加@EventListener注解,并且方法接受参数为监听的event对象
    示例代码:
@Scanner
public class EventListener implements DisposableBean {

    private EventPublisher eventPublisher;

    @Autowired
    public EventListener(@ComponentImport EventPublisher eventPublisher) {
        eventPublisher.register(this);  //注册自己
    }

    // 点赞操作事件监听器
    @EventListener
    public void likeCreatedEvent(LikeCreatedEvent likeCreatedEvent) {

    }

    public void destroy() throws Exception {
        // 释放注册监听器
        eventPublisher.unregister(this);
    }
}

创建好监听器后需要在atlassian-plugin.xml中注册listener

<listener name="demo listener" class="cn.idocode.confluence.plugindemo.listener.EventListener"
              key="eventListener">
    <description>demo插件</description>
</listener>

event参考

参考链接地址

根据需求查找使用事件,也可以根据源码查询,包地址是:com.atlassian.confluence.event.events

示例代码

https://github.com/chaoyz/plugin-demo

参考

Event Listener module

Confluence Java Api 6.3.0

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容