前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Spring Boot 中如何修改Bean的加载顺序?

Spring Boot 中如何修改Bean的加载顺序?

作者头像
百思不得小赵
发布于 2022-12-01 06:59:05
发布于 2022-12-01 06:59:05
1.7K00
代码可运行
举报
文章被收录于专栏:小赵Java总结小赵Java总结
运行总次数:0
代码可运行

最近在面试的时候。面试官闻到了这个问题:说说Spring Boot 中如何修改Bean启动的顺序?好家伙,我只听说过JVM中类的加载顺序,这一下把我唬住了,根本没听说,这玩意儿还能修改了?

面试结束后立马开始翻阅资料,没想到还真是可以,原谅我才疏学浅,爱自由,哪怕有一天也会跌倒。

原来在Spring Boot中有一个@Order注解,可以修改Bean的启动顺序,接下来对其进行说明。


创建一个Spring Boot项目

首先,先搭建一个Spring Boot的开发环境

随意引入一些组件即可

项目创建成功

@Order注解

  • @Order定义带注解的组件的排序顺序。 value()是可选的,表示订单值。 较低的值具有较高的优先级。
  • Spring加载Bean的时候使用@Order注解
  • @Order()默认值为int的最大值,优先级最低

测试效果

创建Class A:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

/**
 * @author xiaoZhao
 * @date 2022/9/30
 * @describe
 */
@Component
@Order(2)
public class ClassA implements CommandLineRunner {

    private static final Logger logger = LoggerFactory.getLogger(ClassA.class);

    @Override
    public void run(String... args) throws Exception {
        logger.info("ClassA is Running ......");
    }
}

使用@Order注解将Class A的优先级设为低优先级

创建CLassB :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

/**
 * @author xiaoZhao
 * @date 2022/9/30
 * @describe
 */
@Component
@Order(1)
public class ClassB implements CommandLineRunner {

    private static final Logger logger = LoggerFactory.getLogger(ClassB.class);

    @Override
    public void run(String... args) throws Exception {
        logger.info("ClassB is Running ......");
    }
}

ClassB 为较高的优先级,Class B将会在ClassA之前运行。

Spring Boot主启动类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

接下来看一下最终运行效果:

从控制台打印的消息可以看到,ClassB优先执行,结果测试成功!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
【MySQL】数据库的数据类型
mysql 中表的建立属性列:列名称 数据类型,例如 num int,它与我们平时写的语言数据类型是倒过来的!
YoungMLet
2024/03/01
3260
【MySQL】数据库的数据类型
MySQL-简介
alter table user change column name username varchar(20);
用户9615083
2022/12/25
6380
MySQL-简介
初识MySQL · 数据类型
对于MySQL来说,是一门编程语言,可能定义不是那么的严格,但是对于MySQL来说也是拥有自己的数据类型的,比如tinyint,varchar等,不过通过本章的学习,你就会知道,这里的数据类型其实和C语言中的数据类型挺像的。
_lazy
2025/03/28
1030
初识MySQL · 数据类型
【MySQL】数据库基础&&库/表的操作&&数据类型详解
为解决上述问题,专家们设计出更加利于管理数据的东西-数据库,能更加有效的管理数据,数据库的水平是衡量一个程序员水平的重要指标
用户10925563
2025/02/16
1480
【MySQL】数据库基础&&库/表的操作&&数据类型详解
【MYSQL】数据类型
当我们插入一个超过范围的数据时,我们会发现会插入失败,由此我们可以得到一个结论:我们成功插入到MYSQL中的数据,一定是合法的。这样能够约束程序员尽可能的插入正确的数据。
青衫哥
2023/10/17
3300
【MYSQL】数据类型
mysql基础
创建mysql数据表的时候,通常会指定类型和长度,那么到底代表什么意思呢,每种类型最大长度又是多少,经过我的查阅资料和实验,把结果记录一下
leobhao
2022/06/28
3620
【MySql】MySql的数据类型
对于数据类型分类,这里简单分为数值类型(如BIT,BOOL,INT),文本、二进制类型(如CHAR,VARCHAR),时间日期(DATE),String类型(如ENUM类型),这里简单了解一下即可
平凡的人1
2023/10/15
6660
【MySql】MySql的数据类型
Linux——MySQL基础
也就是说,mysql是一套提供数据存储服务的网络程序。 数据库一般指的是在磁盘或者内存中存储的特定结构组织的数据——将来在磁盘中存储数据的一套特定方案。 数据库服务就是mysqld。 为什么有数据库 虽然一般文件确实提供了数据存储的功能,但是站在用户角度上,文件并没有提供非常好的数据管理能力。 数据库的本质:对数据内容存取的一套解决方案,你给我数据内容,我直接给你结果。
有礼貌的灰绅士
2025/05/10
1120
Linux——MySQL基础
MySQL数据类型
尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其如此,还不如设计时,将int类型提升为bigint类型。
每天都要进步呀
2023/10/16
2950
MySQL数据类型
MySQL2_字符集及数据类型
文章目录 MySQL_字符集及数据类型 1.字符集 2.校对集 3.MySQL的数据类型--值的类型 (1)整型 (2)unsigned(无符号) (3)显示宽度(zerofill) (4)浮点型 (
以某
2023/03/07
4580
MySQL(三)
指在数据显示的时候,最长可以显示的位数。 如果需要始终以最大长度显示,可以使用 zerofill 属性。 注意: 使用了 zerofill,一定是无符号整型。因为从左到右 0 填充。
1ess
2021/11/01
7620
【MySQL】004.MySQL数据类型
当我们插入128,-129的时候就会发现报错插入的数据超出数据范围。因为tinyint的数据范围是-128 - 127
_孙同学
2025/04/20
820
【MySQL】004.MySQL数据类型
MySQL-学习笔记
Win mysql安装:Windows下安装MySQL详细教程 - m1racle - 博客园 (cnblogs.com)
小简
2022/12/27
4280
MySQL-学习笔记
Mysql 复习总结
 /********** 基本数据类型*******************/
明明如月学长
2021/08/27
7810
mysql多字段主键_sql改变列数据类型
整数类型:tinyint、smallint、mediumint、integer、bigint
全栈程序员站长
2022/09/28
2.7K0
mysql多字段主键_sql改变列数据类型
【Mysql】:linux环境下表的三部曲(数据操作 + 类型解析 + 约束规则)
这篇文章只是对以前的内容作个详细补充,想要速成操作的,可以参考这篇博客 【MySQL学习】:关系数据库标准语言SQL
IsLand1314
2025/02/09
1770
【Mysql】:linux环境下表的三部曲(数据操作 + 类型解析 + 约束规则)
【MySQL基础篇】四、数据类型
​ 上图列举了 mysql 中的数据类型,其实我们主要分为四种类型来讲解,数据类型比较接近的比如说 tinyint、smallint、int 等几个类型,我们只会挑其中一个来讲,因为其它都是类似的!
利刃大大
2025/05/21
1120
【MySQL基础篇】四、数据类型
MySQL数据类型
总结: 如果插入的数据超过MySQL数据类型的范围,那么MySQL就不让你插入,直接拦截,不让做对应的操作。这点和C/C++一样,但是编译器不会报错,语言上给你发生截断,编译器内部可能会隐式转换。 如果已经有数据被成功插入到MySQL中,那么插入的时候一定是合法的。 因此,MySQL中,一般而言,数据类型本身也是一种约束。这种约束倒逼程序员,让程序员尽可能正确插入,如果不正确插入,MySQL也能保证插入的数据合法性。这样就能保证数据库中的数据是可预期完整的。
南桥
2024/07/26
2040
MySQL数据类型
【MySQL】MySQL常见数据类型
从这个数值类型我们也可以发现,这其实也是一种约束。如果我们向mysql特定的类型中插入不合法的数据,MySQL一般会直接拦截相应的操作。这种类型的约束,也可以保证数据库中的数据是可预期的、完整的。
P_M_P
2024/08/12
2000
【MySQL】MySQL常见数据类型
MySQL数据库数据类型
在MySQL数据库中,MySQL数据类型分有四大类:数值类型、文本/二进制类型、时间日期和String类型。以下是这四大类的具体类型:
二肥是只大懒蓝猫
2023/10/13
4330
MySQL数据库数据类型
相关推荐
【MySQL】数据库的数据类型
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档