注:阅读此篇时,请确保你的开发环境已经正常配置,可以正常使用命令行工具创建插件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
网友评论