SpringBoot启动时自动执行方法的方式

系列文章目录


文章目录

  • 系列文章目录
  • 前言


前言

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。
在这里插入图片描述


在springBoot中我们有时候需要让项目在启动时提前加载相应的数据或者执行某个方法,具体可以有如下几种方式

在这里插入图片描述
1.实现ServletContextAware接口并重写其setServletContext方法

import org.springframework.stereotype.Component;
import org.springframework.web.context.ServletContextAware;import javax.servlet.ServletContext;@Component
public class DemoServletContextAware implements ServletContextAware {// 该方法会在填充完普通Bean的属性,但是还没有进行Bean的初始化之前执行@Overridepublic void setServletContext(ServletContext servletContext) {System.out.println("------------>>>>>>>>>> ServletContextAware");}2.实现ServletContextListener接口}

2.实现ServletContextListener接口

import org.springframework.stereotype.Component;import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;@Component
public class DemoServletContextListener implements ServletContextListener {// 在初始化Web应用程序中的任何过滤器或servlet之前,将通知所有servletContextListener上下文初始化@Overridepublic void contextInitialized(ServletContextEvent sce) {System.out.println("------------>>>>>>>>>> ServletContextListener");}
}

3.将要执行的方法所在的类交个spring容器扫描(@Component),并且在要执行的方法上添加@PostConstruct注解或者静态代码块执行

import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;@Component
public class DemoClass {// 静态代码块会在依赖注入后自动执行,并优先执行static {System.out.println("------------>>>>>>>>>> static");}// 在依赖注入完成后自动调用@PostConstructpublic static void demo() {System.out.println("------------>>>>>>>>>> PostConstruct");}
}

4.实现ApplicationRunner接口

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;@Order(-1)
@Component
public class DemoApplicationRunner implements ApplicationRunner {// 用于指示bean包含在SpringApplication中时应运行的接口。可以定义多个applicationrunner bean// 在同一应用程序上下文中,可以使用有序接口或@order注释对其进行排序@Overridepublic void run(ApplicationArguments args) throws Exception {System.out.println("------------>>>>>>>>>> ApplicationRunner");}
}

4.实现CommandLineRunner接口

import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;@Component
public class DemoCommandLineRunner implements CommandLineRunner {// 用于指示bean包含在SpringApplication中时应运行的接口,可以在同一应用程序上下文中定义多个commandlinerunner bean// 可以使用有序接口或@order注释对其进行排序,如果需要访问applicationArguments而不是原始字符串数组,请考虑使用applicationrunner@Overridepublic void run(String... args) throws Exception {System.out.println("------------>>>>>>>>>> CommandLineRunner");}
}

同时在项目中定义如上代码,执行打印结果为

// 内容省略
------------>>>>>>>>>> ServletContextListener
------------>>>>>>>>>> static
------------>>>>>>>>>> PostConstruct
------------>>>>>>>>>> ServletContextAware
// 中间内容省略
------------>>>>>>>>>> ApplicationRunner
------------>>>>>>>>>> CommandLineRunner

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

[华为OD]C卷 运输时间 200 动态规划

题目: M辆车需要在一条不能超车的单行道到达终点,起点到终点的距离为N。速度快的车追上前车 后,只能以前车的速度继续行驶,求最后一车辆到达目的地花费的时间。 注意: 每辆车固定间隔1小时出发,比如第…

antd vue pro (vue 2.x) 多页签详细操作

antd vue pro 多页签配置操作,具体操作如下。 1.引入 tagviews文件 在 store/modules 中创建 tagviews.js ,复制一下代码到文件中保存 const state {visitedViews: [],cachedViews: [] }const mutations {ADD_VISITED_VIEW: (state, view) > {if …

三、Redis五种常用数据结构-Hash

Hash是redis中常用的一种无序数据结构。结构类似HashMap。 具体结构如下:key field value 1、优缺点 1.1、优点 同类数据归类整合储存,方便数据管理。相比于string操作消耗内存和CPU更小。分字段存储,节省网络流量。 1.2、缺点 过期时间…

盘点一下近年来常用的电脑监控软件

企业电脑监控软件通常用于监视员工在工作时间内的电脑使用情况,以确保他们的工作效率和安全性。以下是几种常见的企业电脑监控软件: 1、Ping32 Ping32是一款集成多功能的企业级电脑监控软件,包括员工上网行为管理、文件外发审计、屏幕活动监…

Milvus Cloud 的RAG 的广泛应用及其独特优势

一个典型的 RAG 框架可以分为检索器(Retriever)和生成器(Generator)两块,检索过程包括为数据(如 Documents)做切分、嵌入向量(Embedding)、并构建索引(Chunks Vectors),再通过向量检索以召回相关结果,而生成过程则是利用基于检索结果(Context)增强的 Prompt 来激…

使用API有效率地管理Dynadot域名,设置所有域名默认whois信息

关于Dynadot Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮…

WordPress与Joomla有哪些差异

在前不久遇到Hostease的客户在咨询WordPress和Joomla要如何选择。他们之间有哪些区别。Hostease提供的虚拟主机都可以直接安装这2个网站程序。下面针对WordPress和Joomla进行一些分析和比较。 WordPress和Joomla都是流行的内容管理系统(CMS),…

2024年51cto下载的视频怎么导出

如果你喜欢在51cto上观看各种专业技术视频,那么你可能想将喜欢的视频保存到本地设备中,以便随时随地观看。今天,我们就来探讨一下如何在2024年将51cto下载的视频导出到你的设备中 下载51cto的工具我已经打包好了,有需要的自己下载…

AI换脸原理(4)——人脸对齐(关键点检测)参考文献2DFAN:代码解析

注意,本文属于人脸关键点检测步骤的论文,虽然也在人脸对齐的范畴下。 1、介绍 在本文中,重点介绍了以下几项创新性的成果,旨在为人脸关键点检测领域带来新的突破。 首先,成功构建了一个卓越的2D人脸关键点检测基线模型。这一模型不仅集成了目前最优的关键点检测网络结构,…

信息熵为凹函数-推导

凹函数和凸函数,是凹凸是相对于x轴来说的,对于熵来说,它是凹函数。因为它是-log函数,函数曲线相对于x轴来说是凸的。 Jensen不等式推导 以下是证明熵是凹函数。 引理: ①Jensen不等式,条件:…

SpringBoot框架如何接入RocketMQ?

目录 一、SpringBoot框架介绍 二、RocketMQ介绍 三、RocketMQ的应用场景 四、SpringBoot框架如何接入RocketMQ 一、SpringBoot框架介绍 Spring Boot是一个开源的Java框架,它基于Spring框架,旨在简化Java应用程序的开发。Spring Boot通过自动化配置和约定优于配置的原则,大…

谷歌开源!用 js 编写 Shell 脚本! | 开源日报 No.247

google/zx Stars: 41.4k License: Apache-2.0 zx 是一个用于编写更好脚本的工具。 提供有用的包装器,简化了对 child_process 的操作转义参数并提供合理的默认值使用 JavaScript 编写复杂脚本时比 Bash 更方便可以直接使用 npm 安装 dani-garcia/vaultwarden St…

评估Transitions

Stateflow使用图表中的转换从一种OR状态移动到另一种OR状态。对于图表执行的输入和执行工作流,Stateflow评估转换以确定它们是否有效。有效转换是条件标签为true且路径以状态结束的转换。如果转换有效,则Stateflow将从源状态退出并进入目标状态。 评估Transitions的工作流 T…

图搜索算法 - 拓扑排序

相关文章: 数据结构–图的概念 图搜索算法 - 深度优先搜索法(DFS) 图搜索算法 - 广度优先搜索法(BFS) 拓扑排序 概念 几乎所有的工程都可分为若干个称作活动的子工程,而这些子工程之间,通常受…

Debug项目失败Run成功

一:问题 idea中启动服务,服务一直在启动中,最后超时启动失败 重新构建项目也是一样 二:个人分析 debug因为断点太多了项目起不起来,试一下run直接运行,项目可以快速启动 三:解决办法 在控制…

四、Redis五种常用数据类型-List

List是Redis中的列表,按照插入顺序保存数据,插入顺序是什么样的,数据就怎么保存。可以添加一个元素到列表的头部(左边)或者尾部(右边)。一个列表最多可以包含232-1个元素(4294967295,每个列表超过40亿个元素)。是一种双向列表结构…

uniapp 如何修改 IPA 文件信息页的本地化语言

实现效果: 最终会对应到苹果商店的语言: 例如微信的语言就有多个: 操作: 在 mainfest.json 源码视图中加入: 具体对应的语言key值可以参考Xcode中的语言代码 这个取决于打包后的 lproj 文件 将后缀ipa改成zip打开即…

47. UE5 RPG 实现角色死亡效果

在上一篇文章中,我们实现了敌人受到攻击后会播放受击动画,并且还给角色设置了受击标签。并在角色受击时,在角色身上挂上受击标签,在c里,如果挂载了此标签,速度将降为0 。 受击有了,接下来我们将…

Linux中gitlab-runner部署使用备忘

环境: 操作系统::CentOS8 gitlab版本:13.11.4 查看gitlab-runner版本 可以从https://packages.gitlab.com/app/runner/gitlab-runner/search找到与安装的gitlab版本相近的gitlab-runner版本以及安装命令等信息,我找到与13.11.4相…

C语言,实现数字谱到简谱的转换(二)

C语言,实现数字谱到简谱的转换(二) 前言:本文初编辑于2024年5月8日 CSDN:https://blog.csdn.net/rvdgdsva 博客园:https://www.cnblogs.com/hassle 前言 结合前文使用 之前的程序默认C调4/4拍&#xff…