SpringBoot学习笔记四

SpringBoot学习笔记四-监听机制

  • 1. SpringBoot监听器
    • 1.1 无需配置
      • 1.1.1 CommandLineRunner使用
      • 1.1.2 ApplicationRunner的使用
      • 1.1.3 CommandLineRunner与ApplicationRunner的区别
    • 1.2 需要创建META-INF文件,并在其中创建spring.factories,配置相关的信息
      • 1.2.1 ApplicationContextInitialize
      • 1.2.2 SpringApplicationRunListener

1. SpringBoot监听器

在这里插入图片描述上述的四种监听器按照使用的方式可以分为两种:

1.1 无需配置

  • CommandLineRunner
  • ApplicationRunner:还需要写一个有参的构造函数
@Component
public class MyCommandLineRunner implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("MyCommandLineRunner...run");
        System.out.println(Arrays.asList(args));
    }
}
@Component
public class MyApplicationRunner implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println("MyApplicationRunner...run");
        System.out.println(Arrays.asList(args.getSourceArgs()));
    }
}

项目启动时,会自动执行上述的内容。

1.1.1 CommandLineRunner使用

日常开发中有可能需要实现项目启动后执行的功能,比如特殊数据处理,权限控制、缓存预热等
按照使用可以分为单个实现类和多个实现类,

  • 单个实现类如上面,无需指定执行顺序;
  • 多个实现类如果需要指定执行顺序,需要使用@Order注解来表明执行顺序
@Component
@Order(3)
public class MyCommandLineRunner implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("MyCommandLineRunner...run");
        System.out.println(Arrays.asList(args));
    }
}

@Component
@Order(2)
public class MyCommandLineRunner1 implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("MyCommandLineRunner1...run1");
        System.out.println(Arrays.asList(args));
    }
}
@Component
@Order(1)
public class MyCommandLineRunner2 implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("MyCommandLineRunner2...run2");
        System.out.println(Arrays.asList(args));
    }
}

执行结果:
在这里插入图片描述注解@Order的执行级别是按照1最优先执行,后面依次执行。

1.1.2 ApplicationRunner的使用

spring容器启动完成之后,就会紧接着执行这个接口实现类的run方法。

run方法的参数: ApplicationArguments可以获取到当前项目执行的命令参数。(比如把这个项目打成jar执行的时候,带的参数可以通过ApplicationArguments获取到)
若有多个代码段需要执行,可用@Order注解设置执行的顺序。

1.1.3 CommandLineRunner与ApplicationRunner的区别

  • CommandLineRunner的方法参数是原始的参数,未做任何处理;
  • ApplicationRunner的参数为ApplicationArguments对象,是对原始参数的进一步封装。

1.2 需要创建META-INF文件,并在其中创建spring.factories,配置相关的信息

  • ApplicationContextInitialize
  • SpringApplicationRunListener

1.2.1 ApplicationContextInitialize

目前不去细研究,有兴趣可以看这篇博客:Springboot扩展点之ApplicationContextInitializer

1.2.2 SpringApplicationRunListener

详细内容看这篇博客:SpringApplicationRunListeners 监听器执

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/534853.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WEB3浪潮下的全新体验:精灵派对链游引领边玩边赚的创新之旅

在当前的数字经济浪潮中,区块链技术以其独特的去中心化特性,正在逐渐改变我们的生活和工作方式。其中,区块链游戏(链游)作为新兴的领域,正以其独特的优势吸引着全球玩家的目光。在这样一个背景下&#xff0…

Windows系统安装WinSCP结合内网穿透实现公网远程SSH本地服务器

List item 文章目录 1. 简介2. 软件下载安装:3. SSH链接服务器4. WinSCP使用公网TCP地址链接本地服务器5. WinSCP使用固定公网TCP地址访问服务器 1. 简介 ​ Winscp是一个支持SSH(Secure SHell)的可视化SCP(Secure Copy)文件传输软件,它的主要功能是在本…

Win11又来「重大」更新!

ChatGPT狂飙160天,世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站ai人工智能工具 更多资源欢迎关注 Windows 11预览通道的22635.3420版本迎来了几个比较大的改进,主要有三个方面: …

LeetCode题练习与总结:不同路径--62

一、题目描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径&…

【教学类-51-01】20240411动物皮毛图片的彩色打印PDF制作(一页两张图片,2个表格)

作品展示 背景需求: 为了便于快速做出A4两份图片的效果,设计以下代码,进行图片的PDF合成打印 代码参考: 【教学类-50-06】20240410“数一数”4类星号图片制作PDF学具-CSDN博客文章浏览阅读531次,点赞8次,收…

第3章 存储系统(2)

3.3 主存储器与CPU连接 3.3.1 连接原理 现代计算机的MAR和MDR都在CPU内部。 (1)主存储器通过数据总线,地址总线,控制总线与CPU连接。 (2)数据传输率数据总线宽度*总线频率。 (4)控制总线(读写线)控制读写操作。 3.3.2 主存的扩展 数据总线宽度等于存储字长 1.位扩展法【增加…

性能优化“万金油”:缓存Cache

1、首次请求数据时,先从缓存中获取,如果没有,则继续向数据库中获取。获取到数据后,将数据保存到缓存中。再次请求数据,一样先从缓存中获取,成功获取,“缓存命中”。多次请求中,命中次数占全部请求次数的比例,叫“命中率”。如果数据源的数据发生变化,而缓存中的数据没…

4.11作业

服务器端 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTcpServer> //服务器端类 #include<QMessageBox> //消息对话框 #include<QTcpSocket> //客户端类 #include<QList> //链表容器QT_BEGIN_NAMESPACE namespace Ui { cla…

【JAVASE】抽象类和接口及其抽象类和接口的区别

✅作者简介&#xff1a;大家好&#xff0c;我是橘橙黄又青&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;再无B&#xff5e;U&#xff5e;G-CSDN博客 目标&#xff1a; 1. 抽象类 2. 接口 3. Object 类 1. &am…

linux中rpm包与deb包的区别及使用

文章目录 1. rpm与deb的区别2. deb软件包的格式和使用2.1 deb软件包命令遵行如下约定2.2 dpkg命令2.3 apt-命令 3. Unix和Linux的区别Reference 1. rpm与deb的区别 有的系统只支持使用rpm包安装&#xff0c;有的只支持deb包安装&#xff0c;混乱安装会导致系统问题。 关于rpm和…

C语言——实践小游戏(贪吃蛇)代码版

大家好久不见&#xff0c;我是残念我回来了&#xff0c;希望在你看完之后&#xff0c;能对你有所帮助&#xff0c;有什么不足请指正&#xff01;共同学习交流 本文由&#xff1a;残念ing原创CSDN首发&#xff0c;如需要转载请通知 个人主页&#xff1a;残念ing-CSDN博客&#x…

Linux网络名称空间的调试方法全面分析

Linux网络名称空间是一种广泛使用的技术&#xff0c;用于隔离网络环境&#xff0c;特别是在容器化和微服务架构中&#x1f4e6;。然而&#xff0c;随着网络名称空间的广泛应用&#xff0c;开发者和系统管理员可能会遇到需要调试网络名称空间配置和性能的情况&#x1f50d;。本文…

智能驾驶的关键技术:自主泊车轨迹规划

智能驾驶的关键技术&#xff1a;自主泊车轨迹规划 搭载先进的车载传感器、控制器、执行器等装置&#xff0c;具备复杂环境感知、智能化决策等功能的车辆&#xff0c;我们称之其为智能车。智能车的车载决策规划模块用于生成车辆的行驶行为&#xff0c;直接体现车辆行驶的智慧水…

【Tars-go】腾讯微服务框架学习使用01--初始化服务

1 初始INIT-Demo运行 按照官网描述 go get 安装框架依赖 # < go 1.16 go get -u github.com/TarsCloud/TarsGo/tars/tools/tarsgo go get -u github.com/TarsCloud/TarsGo/tars/tools/tars2go # > go 1.16 go install github.com/TarsCloud/TarsGo/tars/tools/tarsgolat…

【网安小白成长之路】6.pkachu、sql-lbas、upload-lbas靶场搭建

&#x1f42e;博主syst1m 带你 acquire knowledge&#xff01; ✨博客首页——syst1m的博客&#x1f498; &#x1f51e; 《网安小白成长之路(我要变成大佬&#x1f60e;&#xff01;&#xff01;)》真实小白学习历程&#xff0c;手把手带你一起从入门到入狱&#x1f6ad; &…

python---3--sort、lambdalen(list1)、sorted_numbers = sorted(numbers)、list.sort()

学习目标&#xff1a; lambda len(list1) sorted_numbers sorted(numbers)list.sort() 目录 学习目标&#xff1a; 学习内容&#xff1a; 匿名函数 lambda表达式 lambda [参数]: 函数 不需要return len(list1) sorted_numbers sorted(numbers) list.sort(keyNone, r…

进程通信(管道)

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 前言 两个进程直接可以进行数据的直接传递吗&#xff1f;答案显然是不可以。 为什么&#xff1f; 我们简单概括就是进程具有独立性&#xff0c;如果说有两个进程&#xff0c;第一个进程可以访问第二个进程的数据&#xff…

ssm“健康早知道”微信小程序

采用技术 ssm“健康早知道”微信小程序的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringMVCMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 需求分析 利用ssm、Java、MyEclipse和mysql数据库等知识点&#xff0c;结合相关设…

【CSDN创作优化2】内嵌图片 `<img>` 标签`height`和`width`属性

【CSDN创作优化2】内嵌图片 标签height和width属性 写在最前面<img> 标签简介控制图像尺寸&#xff1a;height和width属性实例为什么要指定height和width注意事项 使用百分比进行响应式设计小结 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字…

idea 配置各种背景颜色-护眼绿

idea 配置各种背景颜色 1、打开 IDEA 软件&#xff0c;点击左上角的【File】——>【Settings】 2、点击左侧栏中的【Editor】——>【Color Scheme】选项&#xff0c;点击右侧的【scheme】下拉选择你想要的颜色方案。 3、背景色设置护眼绿或其他特定颜色的背景&#xf…