Spring Boot发布事件订阅代码记录
@Resource
private ApplicationContext applicationContext;
//发布事件
applicationContext.publishEvent(new CreateTreeEvent(this, new CreateTreeEventParameter(project.getId())));
public class CreateTreeEvent extends ApplicationEvent {
private final CreateTreeEventParameter parameter;
public CreateTreeEvent(Object source, CreateTreeEventParameter parameter) {
super(source);
this.parameter = parameter;
}
public CreateTreeEventParameter getParameter() {
return this.parameter;
}
}
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@Data
public class CreateTreeEventParameter extends NavigatTreeEventParameter{
public CreateTreeEventParameter(Long projectId){
super(projectId);
}
}
@Slf4j
@Component
public class CreateTreeListener {
@TransactionalEventListener(fallbackExecution = true)
public void onApplicationEvent(@NotNull CreateTreeEvent event) {
log.info("CreateTreeListener onApplicationEvent projectId:{}, parameter:{}", event.getParameter().getProjectId(),
event.getParameter());
// TODO 事件监听后处理业务
});
}
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public class NavigatTreeEventParameter implements Serializable {
private Long projectId;
}