首页 > 其他分享 >springboot事件监听

springboot事件监听

时间:2024-08-25 13:05:06浏览次数:8  
标签:SysUser springboot springframework 监听 public user import event 事件

 

一、定义事件

 

package com.base.common.event;

import com.base.common.core.domain.entity.SysUser;
import org.springframework.context.ApplicationEvent;

public class MyCustomEvent extends ApplicationEvent {

    private SysUser user;

    public MyCustomEvent(Object source, SysUser user) {
        super(source);
        this.user = user;
    }

    public SysUser getUser() {
        return user;
    }
}

 

二、定义事件监听

自定义异步方法写法:

package com.base.common.event;

import com.base.common.core.domain.entity.SysUser;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.event.EventListener;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;

@Component
@Slf4j
public class MyCustomEventListener{

    @EventListener
    @Async
    public void MyCustomListener(MyCustomEvent event) throws Exception {
        SysUser user = event.getUser();
        Thread.sleep(3000);
        log.info("bean-listener 收到了 publisher 发布的消息: " + user.getUserName());
    }


}

 

实现ApplicationListener接口写法:

package com.base.common.event;

import com.base.common.core.domain.entity.SysUser;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationListener;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;

@Component
@Slf4j
public class MyCustomEventListener implements ApplicationListener<MyCustomEvent> {
    @Override
    @Async
    public void onApplicationEvent(MyCustomEvent event) {
        SysUser user = event.getUser();
        try {
            Thread.sleep(3000);
        } catch (Exception e) {
            e.printStackTrace();
        }
        log.info("bean-listener 收到了 publisher 发布的消息: " + user.getUserName());
    }

}

 

三、发布事件

@Slf4j
@RestController
@RequestMapping("/system/user")
@AllArgsConstructor
public class SysUserController extends BaseController {

    private final ISysUserService userService;
    private final ApplicationContext context;

    @PostMapping("/send")
    public AjaxResult send() {
        String message = "发送成功";

        SysUser sysUser = userService.selectUserById(1L);

        MyCustomEvent event = new MyCustomEvent(this, sysUser);
        context.publishEvent(event);

        return success(message);
    }

}

 

标签:SysUser,springboot,springframework,监听,public,user,import,event,事件
From: https://www.cnblogs.com/fyiyy/p/18378845

相关文章

  • 基于SpringBoot的智慧党建系统+uniapp移动端+LW示例参考
    1.项目介绍技术栈+环境:SpringBoot+thymeleaf+uniapp+IDEA+Navicat+MySQL功能介绍:后端功能:首页管理(轮播图、通知公告、新闻管理)、用户管理(用户信息、用户反馈、用户订单、用户动态)、其他管理(题库管理、任务管理)移动端:学习模块、游戏学习模块、打卡签到、积分商城、问题咨......
  • 基于SpringBoot+Vue的宿舍管理系统
    郑重声明:项目经过本地测试,确保可以运行。项目仅供学习和毕业设计参考~1.项目介绍宿舍管理系统,是前后端分离项目。功能包括:权限管理,菜单管理,项目运行宿舍管理,学生管理,班级管理,宿舍楼管理,各项记录(归寝记录,维修记录,请假记录,晚归记录。环境配置:Jdk1.8+IDEA+Mysql5.7技术......
  • 只需六步:加速企业网络安全事件响应
        现代安全工具在保护组织网络和端点免受黑客攻击的能力不断提高。但攻击者仍然偶尔会找到进入的方法。    安全团队必须能够阻止威胁并尽快恢复正常运营,这就是为什么这些团队不仅要拥有合适的工具,还要了解如何有效应对事件的原因。通常我们可以通过自定义......
  • SpringBoot文档之开源软件依赖的阅读笔记
    DependencyVersions维护开源软件清单,并不是一个轻松、愉快的工作。很好奇SpringBoot的开发团队使用什么方式来管理、维护依赖清单,完成兼容性验证工作等。ManagedDependencyCoordinatesSpringBoot集成的开源软件的清单,以及版本号。VersionProperties比如使用${acti......
  • SpringBoot文档之配置参数的元数据的阅读笔记
    ConfigurationMetadata现代的IDE通过解析配置项的元数据信息,从而可以为开发者提供提示信息和补齐能力,提高维护配置文件的效率。SpringBoot支持的配置文件,比如application.properties或者application.yaml。对于一般的开发者而言,只需享受SpringBoot带来的便利。而对于组件的开......
  • SpringBoot文档之Jar文件格式的阅读笔记
    TheExecutableJarFormat使用spring-boot-maven-plugin构建项目时,生成的目标jar文件的格式的说明。NestedJARs以JarLauncher为例:META-INF/MANIFEST.MF,定义jar的元数据。org.springframework.boot.loader.launch.JarLauncher.class,jar的启动类。BOOT-INF/classes/,放......
  • JAVA毕业设计|(免费)springboot共享汽车管理系统包含文档代码讲解
    收藏点赞不迷路 关注作者有好处编号:springboot118springboot共享汽车管理系统开发语言:Java数据库:MySQL技术:Spring+SpringMVC+MyBatis工具:IDEA/Ecilpse、Navicat、Maven1.系统展示2.万字文档展示第5章系统详细设计5.1管理员模块的实现5.1.1用户信息管理共享......
  • SpringBoot文档之Logging的阅读笔记
    市面上常见的日志记录框架,如下:LogbackLog4j2Log4j1.X官方维护已停止,基本上只有老旧项目在使用。JULCommonsLoggingSLF4J新项目启动时,通常集成SLF4J和Log4j2,代码中使用SLF4J的日志API来记录日志,使用Log4j2来管理日志的输出、管理日志文件。有一些项目会使用JUL或者Com......
  • SpringBoot文档之Web的阅读笔记
    Web基于SpringBoot框架开发应用,支持内嵌Tomcat/Jetty/Undertow/Netty来提供HTTP服务器。SpringBoot当前封装了如下组件:spring-boot-starter-webspring-boot-starter-webfluxServletWebServletWebApplications重要的注解:@Controller@RestController@RequestMa......
  • (javaweb)springboot的底层原理
    目录一.配置优先级二.Bean的管理1.获取bean​编辑​编辑2.bean作用域3.第三方bean三.SpringBoot原理 自动配置原理原理分析:conditional: 自动配置案例:(自定义starter分析)总结一.配置优先级//命令行参数的优先级最高二.Bean的管理1.获取bean注入ioc......