spring启动自动执行方法

原文链接:

Spring Boot 启动时,让方法自动执行的 4 种方法!-阿里云开发者社区 (aliyun.com)

-------------------------------------------------------------------------------------------------------------------------------- 

在springBoot中我们有时候需要让项目在启动时提前加载相应的数据或者执行某个方法,那么实现提前加载的方式有哪些呢?

接下来我带领大家逐个解答

1、实现ServletContextAware接口并重写其setServletContext方法

@Component
public class TestStarted implements ServletContextAware {/*** 在填充普通bean属性之后但在初始化之前调用* 类似于initializingbean的afterpropertiesset或自定义init方法的回调**/@Overridepublic void setServletContext(ServletContext servletContext) {System.out.println("setServletContext方法");}
}

注意:该方法会在填充完普通Bean的属性,但是还没有进行Bean的初始化之前执行

2、实现ServletContextListener接口

/*** 在初始化Web应用程序中的任何过滤器或servlet之前,将通知所有servletContextListener上下文初始化。*/
@Override
public void contextInitialized(ServletContextEvent sce) {//ServletContext servletContext = sce.getServletContext();System.out.println("执行contextInitialized方法");
}

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

@Component
public class Test2 {//静态代码块会在依赖注入后自动执行,并优先执行static{System.out.println("---static--");}/***  @Postcontruct’在依赖注入完成后自动调用*/@PostConstructpublic static void haha(){System.out.println("@Postcontruct’在依赖注入完成后自动调用");}
}

4、实现ApplicationRunner接口

/*** 用于指示bean包含在SpringApplication中时应运行的接口。可以定义多个applicationrunner bean* 在同一应用程序上下文中,可以使用有序接口或@order注释对其进行排序。*/
@Override
public void run(ApplicationArguments args) throws Exception {System.out.println("ApplicationRunner的run方法");
}

5、实现CommandLineRunner接口

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Springboot整合支付宝沙箱支付

2.配置说明 要记住这几个重要的配置 appId 这个是appIdprivateKey 商户私钥publicKey 支付宝公钥, 即对应APPID下的支付宝公钥notifyUrl 支付成功后异步回调地址(注意是必须是公网地址)returnUrl #支付后回调地址signType 签名类型 一般写 RSA2charset utf-8format json #网关…

数据结构奇妙旅程之红黑树

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

印染厂区污水怎么处理

印染厂污水处理是一项十分重要且紧迫的环境问题。随着工业化的快速发展,印染厂所排放的大量废水不仅对环境造成了严重影响,也对人们的生活和健康带来了潜在的威胁。因此,寻找有效的印染厂污水处理方法显得尤为重要。 针对印染厂污水的特点&am…

通过Arthas修改并热发布代码

通过Arthas修改并热发布代码 主要使用jad、mc、retransform三个命令: jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.javamc /tmp/UserController.java -d /tmpretransform /tmp/com/example/demo/arthas/user/UserCo…

tp8 mpdf 导出pdf

1. 安装mpdf composer require mpdf/mpdf 2. 然后 使用 use mpdf\Mpdf; 或者 require_once __DIR__ . /vendor/autoload.php; 官方文档 mPDF – mPDF 手册 文档里有很多东西 可以自己去研究 3. 编写代码 下载 (支持中文) $mpdf new Mpdf([mode > utf-8,"autoS…

【技术干货】MediaCrawler:一站式社交平台数据抓取利器,带你玩转小红书、抖音、快手、B站和微博数据分析

一、引言 大数据时代,社交媒体平台上的海量信息为我们提供了丰富洞察市场、研究用户行为的机会。然而,如何高效便捷地收集和整理这些分散在各平台的数据呢?今天,我们将为您揭秘一款专为小红书、抖音、快手、B站和微博打造的强大数…

用python实现视频异常检测

视频异常检测是一个复杂的任务,它涉及到对视频帧的分析和比较,以检测与正常模式不符的异常行为或事件。下面是一个基本的步骤指南,以及如何使用Python实现视频异常检测: 步骤指南 视频帧提取:首先,你需要…

实在智能与中国信通院联合牵头智能体(Agent)标准编制

近日,中国信息通信研究院(以下简称“信通院”)启动国内首个《智能体(Agent)技术要求与评估方法》系列标准编制,实在智能作为参编单位并牵头编制技术能力部分,深度参与该标准对智能体技术要求和评…

阿里云ecs服务器配置反向代理上传图片

本文所有软件地址: 链接:https://pan.baidu.com/s/12OSFilS-HNsHeXTOM47iaA 提取码:dqph 为什么要使用阿里云服务器? 项目想让别人通过外网进行访问就需要部署到我们的服务器当中 1.国内知名的服务器介绍 国内比较知名的一些…

机器学习复习(9)——自定义dataset

目录 第一种dataset(文件夹名即为标签) 用于将格式(1)转换为格式(2) 第二种dataset(标签在labels文件夹下的对应的txt文件里面) 第一种dataset(文件夹名即为标签) 数据组织格式(1) --data ----train …

续上篇 qiankun 微前端配置

上篇文章地址:微前端框架 qiankun 配置使用【基于 vue/react脚手架创建项目 】-CSDN博客 主应用: src/main.js 配置: import Vue from vue import App from ./App.vue import router from ./router import { registerMicroApps, start } …

【小程序开发】蓝牙设备API——单点蓝牙应用程序编程接口整理(二)

ty.device.getBLEDeviceRSSI 获取 BLE 外设的信号 需引入DeviceKit,且在>1.2.6版本才可使用 参数 Object object 属性类型默认值必填说明deviceIdstring是设备模型 deviceId 设备 Idcompletefunction否接口调用结束的回调函数(调用成功、失败都会执…

jar读取目录配置、打包jar后无法获取目录下的配置

jar读取目录配置、打包jar后无法获取目录下的配置 jar读取目录配置、打包jar后无法获取目录下的配置。java打成jar包后获取不到配置文件路径。解决项目打成jar包上线无法读取配置文件。打包jar后无法读取resource下的配置文件 场景 需要读取 src/main/resources/mapper下的所…

大机中的汇编语言该怎么学

提起程序开发,就不得不说合久必分,分久必合,反成各个程序段之间都有这个关系,而多个程序又组成一个功能组,可以完成一项业务,ASM比JCL难很多,因为它涉及到地址和业务。 一 ASM 的难度如何 比方…

UGUI界面性能优化3-合理规划界面层级结构

在Unity中,UGUI(Unity GUI)是一种用于创建用户界面的工具。合理规划界面层级结构对于开发一个可维护和易于使用的界面非常重要。以下是一种合理的UGUI界面层级结构规划方式: Canvas(画布):Canva…

【python】flask框架的生命周期,多种查询参数的获取方式

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

python图形化编程pygame游戏模块

文章目录: 一:语句使用模板 基本框架 1.安装Pygame 2.创建一个主窗口display 3.图像渲染与动画 4.鼠标事件mouse 5.声音和音乐sound 6.设置屏幕背景颜色fill 7.添加文字font 8.绘制图形draw 8.1 绘制多边形polygon 8.2 绘制直线line 8.3 绘…

探索编程迷宫:选择你的职业赛道

在现代科技的浪潮中,程序员的职业赛道就像是一座迷宫,充满着前端的美丽花园,后端的黑暗洞穴,以及数据科学的神秘密室。这个迷宫中,每一条通道都充满了挑战和机遇,而每一个行走其中的人都在寻找着属于自己的…

LM studio使用gemmar聊天小试

通过LM studio可以方便的使用各种模型,使用LM提供的chat界面或者是使用python代码。 试试代码 在windows下使用python简单一试,例子直接复制LM界面上的代码: 用pip安装 openai包在LM界面 Start Server 需要安装 openai包。 本地电脑是I7…

C++ GUI库FLTK的基本使用

文章目录 1. Ubuntu下FLTK编译和使用2. Windows下FLTK编译使用 1. Ubuntu下FLTK编译和使用 编译源码 安装依赖 sudo apt install libx11-dev sudo apt install cmake make编译 # 进入源码目录fltk-1.3.9 mkdir build cd build cmake .. make库文件位于build/lib中 准备头文件#…