前言
需要加载全局变量的情况很常见,如取通用的系统初始化配置等
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
通过这种方式,我们就可以在整个应用程序中使用这些全局变量了文章来源地址https://www.toymoban.com/news/detail-602747.html
到了这里,关于说说如何在SpringBoot中启动加载全局变量的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!