说说如何在SpringBoot中启动加载全局变量

这篇具有很好参考价值的文章主要介绍了说说如何在SpringBoot中启动加载全局变量。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

需要加载全局变量的情况很常见,如取通用的系统初始化配置等

Spring Boot 可以通过实现 CommandLineRunner 或 ApplicationRunner 接口,让某些代码在 Spring Boot 应用启动之后执行。因此,在启动时从数据库加载全局变量,可以在这些接口的 run() 方法中实现

实现步骤

1.定义一个全局变量类,如下:

@Component
public class GlobalVariables {

    private static Map<String,String> globalMap = new HashMap<>();

    public static String getVariable(String key) {
        return globalMap.get(key);
    }

    @PostConstruct
    public void loadGlobalVariables() {
        List<Variable> variables = ... //从数据库加载所有变量
        for (Variable variable: variables) {
            globalMap.put(variable.getName(), variable.getValue());
        }
    }
}

在这个类中,全局变量被定义为一个静态 Map 对象,其中 key 是变量名,value 是变量值

在 PostConstruct 注解的方法中,从数据库中加载所有变量,并将它们放到全局 Map 中

2.在启动时调用 GlobalVariables.loadGlobalVariables() 方法

可通过实现 CommandLineRunner 或 ApplicationRunner 接口实现

@SpringBootApplication
public class MyApplication implements CommandLineRunner {

    @Autowired
    private GlobalVariables globalVariables;

    @Override
    public void run(String... args) throws Exception {
        globalVariables.loadGlobalVariables();
    }

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

在 MyApplication 类中,实现了 CommandLineRunner 接口,并将其注入 GlobalVariables 对象

在 run() 方法中调用 GlobalVariables.loadGlobalVariables() 方法,从而在启动时从数据库加载所有全局变量

原理分析

GlobalVariables 类使用了 @PostConstruct 注解,这意味着该方法会在该类的实例被创建并初始化之后被调用,在该类的 loadGlobalVariables() 方法中,我们从数据库加载了所有的全局变量,并将它们存到 static 修饰的 Map 中

MyApplication 类实现了 CommandLineRunner 接口,并将其注入了 GlobalVariables 对象,因此,在应用启动后,Spring 会调用 run 方法,并执行 GlobalVariables.loadGlobalVariables() 方法,从数据库中加载全局变量,并将它们存到全局 Map 中

通过这种方式,我们就可以在整个应用程序中使用这些全局变量了文章来源地址https://www.toymoban.com/news/detail-602747.html

到了这里,关于说说如何在SpringBoot中启动加载全局变量的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用springboot启动类报错: 找不到或无法加载主类怎么解决?

    在使用springboot启动类时,并没有写错代码和注解,然后它还是 报错找不或无法加载主类 解决此问题的办法 就是,重新在项目结构中的Modules吧项目移除再次加载进了即可,具体操作步骤如下: 从File点击Project Settings 就会进入此界面 将Modules中的项目都移除,通过选中项目然

    2024年02月12日
    浏览(52)
  • SpringBoot 如何使用 @ControllerAdvice 注解进行全局异常处理

    在 Web 开发中,异常处理是非常重要的一环。在 SpringBoot 框架中,我们通常使用 @ExceptionHandler 注解来处理 Controller 层的异常。但是,如果想要处理全局异常,我们需要使用 @ControllerAdvice 注解。本文将介绍如何在 SpringBoot 中使用 @ControllerAdvice 注解进行全局异常处理。 @Controll

    2024年02月10日
    浏览(45)
  • #Uniapp:引入fonts&目录结构&全局样式&启动模式&全局变量

    uni-app 运行到微信开发者工具需要注意 小程序路径需要配置, 小程序端口需要开启 目录结构 开发规范 遵循vue和小程序混合 全局配置样式 全局 pages.json 局部的样式会覆盖全局的样式 https://uniapp.dcloud.net.cn/collocation/pages#style 可以单独设置h5的样式 tabBar tabBar 中的 list 是一个数

    2024年01月24日
    浏览(38)
  • 17、YML配置文件及让springboot启动时加载我们自定义的yml配置文件的几种方式

    其实本质和.properties文件的是一样的。 Spring Boot默认使用SnakeYml工具来处理YAML配置文件,SnakeYml工具默认就会被spring-boot-starter导入,因此无需开发者做任何额外配置。 YAML本质是JSON的超级,它在表示结构化文档时更有表现力。 ▲ properties文件使用 .分隔符 作为结构化的表现:

    2024年02月14日
    浏览(48)
  • SpringBoot如何让业务Bean优先于其他Bean加载

    本博客原文地址:https://ntopic.cn/p/2023090901/ 源代码先行: Gitee本文介绍的完整仓库:https://gitee.com/obullxl/ntopic-boot GitHub本文介绍的完整仓库:https://github.com/obullxl/ntopic-boot 今天走读一个应用程序代码,发现一个有趣的现象:有多个不同的业务Bean中均依赖了一个参数工具类Para

    2024年02月09日
    浏览(62)
  • springboot项目如何配置启动端口

    项目启动需要一个独立的端口,所以在此记录一下。 根据配置文件的后缀书写格式略有不同。 若是.yaml后缀的配置文件,那么端口书写为 此格式切记缩进 若是.properties后缀的配置文件,那么端口书写为 两端使用等号链接 设置–工具–终端–环境变量: server.port=端口号 因为

    2024年02月03日
    浏览(43)
  • SpringBoot源码分析之Tomcat是如何在SpringBoot中启动的?

    一.前言 我们知道SpringBoot可以直接把传统的war包打成可执行的jar包,直接启动。这得益于SpringBoot内置了容器可以直接启动。本文将以 Tomcat 为例,来看看 SpringBoot 是如何启动 Tomcat 的。 一.SpringApplication初始化 调用到最终的run方法我们来看一下 这里面首先创建了一个SpringAppl

    2024年02月05日
    浏览(42)
  • 如何一次性启动多个SpringBoot项目

    在做微服务这块的架构设计的时候,当微服务数量越来越多的时候,本地启动各个服务的时候,可能得手动启动每个启动类。这样就很麻烦,因此记录一下如何在 idea 里面一键启动所有的项目。 比如我项目里面有5个微服务:那么就对应了5个启动类。 1.项目右上角编辑: 2.点

    2024年02月16日
    浏览(76)
  • Springboot如何判断pom.xml中是否加载了某个jar依赖

    这里可以使用一个取巧的方法来判断, 即通过使用上下文对象的getClassLoader().loadClass(\\\"要判断的jar包中的标志性类Reference地址\\\");  来加载某个jar包中的标志性类来判断pom.xml文件中是否加载了某个依赖, 如果加载成功表示pom中加载了某个jar 依赖, 如果不成功表示没有加载某个依赖

    2024年03月19日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包