SpringBoot配置文件-SpringBoot中静态变量注入方案-《Java笔记》

admin 2025-10-19 04:51:49 编程 来源:ZONE.CI 全球网 0 阅读模式

Java SpringBoot

普通变量

首先来看看,如何给普通变量注入值?例如,application-dev.yml 配置文件有如下配置:SpringBoot中静态变量注入方案 - 图1给普通变量赋值时,直接在变量声明之上添加@Value()注解即可,如下所示:SpringBoot中静态变量注入方案 - 图2

静态变量

例如给项目中的文件上传封装一个工具类。阿里云oss的相关信息配置在配置文件中,需要将信息注入到工具类中的变量。为了方便直接使用变量,把变量定义为静态变量。当要给静态变量注入值的时候,若是在静态变量声明之上直接添加@Value()注解是无效的。如下图所示。SpringBoot中静态变量注入方案 - 图3SpringBoot中静态变量注入方案 - 图4

解决方案

方案一

若要给静态变量赋值,可以使用set()方法注入。

  1. 类上加入@Component注解
  2. @Value注解标记set方法
  3. 方法名(例如setOssUrl)和参数名(例如ossUrl)可以任意命名如下所示:

SpringBoot中静态变量注入方案 - 图5

方案二

如果觉得@Value注解麻烦,可以使用@ConfigurationProperties注解代替,这样比较简洁

  1. 前缀要写合适
  2. 方法名(例如setOssUrl)必须和属性保持一致,例如写为setUrl()会注入失败
  3. 类上加入@Component注解

SpringBoot中静态变量注入方案 - 图6SpringBoot中静态变量注入方案 - 图7

方案三

  1. 类上加入@Component注解
  2. @PostConstruct注解修饰的方法中进行赋值操作

SpringBoot中静态变量注入方案 - 图8

使用场景

那么问题来了,什么场景下需要把值注入到静态变量?

场景一

这个主要看静态的使用场景。比如:一个配置文件中的一个变量,多个类中都要用到,在多个类中都通过@Value方式获取也可以,但是弊端是:同一个参数,就有了多处引用的地方,一旦出现问题,只通过使用的的地方不方便看到,要全局搜。如果使用public static注入,那么整个项目使用的这个配置参数都是一致的,统一的。

场景二

工具类中将值注入静态变量,就可以直接在静态方法之中使用。

以太坊cppgolang区别 编程

以太坊cppgolang区别

以太坊是一种去中心化的开源平台,它采用智能合约技术,旨在构建和运行不受干扰的分布式应用程序。作为目前最受欢迎的区块链平台之一,以太坊提供了多种编程语言的支持,其
progolang 编程

progolang

Go语言(Golang)是由Google开发的一门静态类型编程语言。作为一名专业的Golang开发者,我深知这门语言的优势和特点。在本文中,我将介绍Golang
golangn个发送者 编程

golangn个发送者

Golang是一种开源的编程语言,由Google团队开发,旨在提高程序的并发性和简化软件开发过程。在Go语言中,有时需要向多个接收者发送信息。本文将介绍如何在G
golang技能图谱 编程

golang技能图谱

从互联网行业的快速发展到人工智能技术的日益成熟,各种编程语言也应运而生。而在这众多的编程语言中,Golang(即Go)作为一门强大且高效的开发语言备受关注。Go
评论:0   参与:  0