`

SpringBoot使用@Value给静态变量注入值

 
阅读更多

SpringBoot中使用@Value()只能给普通变量注入值,不能直接给静态变量赋值

 

例如,application-dev.properties 配置文件有如下配置:

 

 

 

给普通变量赋值时,直接在变量声明之上添加@Value()注解即可,如下所示:

 

 

 

当要给静态变量注入值的时候,若是在静态变量声明之上直接添加@Value()注解是无效的,例如:

 

 

 

虽然没有编译和运行上的报错,经调试可知这种注解方式mailUsername、mailPassword、mailHost的值都是null,也就是说直接给静态变量读取配置文件是无效的,如下所示:

 

 

 

若要给静态变量赋值,可以使用set()方法,其中需要在类上加入@Component注解,方法名(例如setMailUsername)和参数名(例如username)可以任意命名,如下所示:

 

 

 

调试结果如下:

 

 

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

作者:花栗鼠先生 

来源:CSDN 

原文:https://blog.csdn.net/mononoke111/article/details/81088472 

版权声明:本文为博主原创文章,转载请附上博文链接!

分享到:
评论

相关推荐

    springboot 使用yml配置文件给静态变量赋值教程

    现在,当Spring Boot应用启动时,它会自动加载`yml`配置文件,并调用`ClickHouseUtil`类中带有`@Value`注解的setter方法,将配置文件中的值赋给相应的静态变量。这样,我们的静态方法(如`getConn()`)就可以使用...

    Spring Boot使用Value注解给静态变量赋值的方法

    然后,我们可以使用 @Value 注解来注入配置文件中的值,但是我们不能直接将值注入到静态变量中,而是需要使用非静态的 set 方法来注入。 例如,在下面的代码中,我们使用 @Value 注解来注入 oss.endpoint 和 oss....

    Spring boot工具类静态属性注入及多环境配置详解

    Spring Boot工具类静态属性注入是指使用Spring Boot框架时,如何将配置信息注入到工具类的静态变量中,以便在程序中使用这些配置信息。这种方式可以方便地在不同的环境中切换配置信息,例如在开发环境中使用本地的...

    spring boot静态变量注入配置文件详解

    要解决静态变量注入问题,我们可以使用 Spring 的 set 注入方法,通过非静态的 setter 方法注入静态变量。例如,我们可以将 KafkaConfig 类修改为: ```java @Component(value = "KafkaConfig") @...

    springboot无法从静态上下文中引用非静态变量的解决方法

    解决办法是使用spring的set注入方法来将非静态变量注入静态变量。下面是一个示例代码: ```java @PropertySource(value = {"classpath:config/application.yml"}, ignoreResourceNotFound = true, encoding="UTF-8...

    springboot中文api.zip

    2. **配置**:讲解如何配置SpringBoot应用,包括属性文件的结构和优先级,以及如何使用@Value注解注入配置值。 3. **Web开发**:详述如何使用SpringMVC进行Web开发,包括控制器、视图解析、静态资源处理和模板引擎...

    SpringBoot如何读取配置文件参数并全局使用

    在 SpringBoot 中,我们可以使用 `@Value` 注解来读取配置文件中的参数,该注解可以将配置文件中的参数注入到 JavaBean 中。例如,我们可以使用 `@Value("${test.app_id}")` 来读取配置文件中的 `app_id` 参数。但是...

    如何更优雅地获取spring boot yml中的值

    传统上,我们可能会使用`@Value`注解,如`@Value("${server.url}")`,但这在处理复杂配置结构时可能会导致代码可读性下降。 更优雅的方式是使用`@ConfigurationProperties`注解。首先,我们需要创建一个Java类来...

    springboot mybatis 多数据源 两种实现

    最后,通过`@Resource`注解注入对应的DataSource到Service层,即可根据业务需求选择数据源进行操作。 **二、动态添加数据源** 动态添加数据源通常适用于需要在运行时根据条件灵活切换或增加数据源的场景。这涉及到...

    Spring Boot.docx

    我们可以使用 `@Value` 或 `@ConfigurationProperties` 注解来注入这些属性,比如数据库连接信息。`@ConfigurationProperties` 更为强大,它允许将整个配置块映射到一个 POJO 类。 5. **多个 YAML 文件** 对于复杂...

    Java 模板引擎 jetbrick-template在springmvc中配置使用

    它是一款轻量级的模板引擎,支持丰富的语法特性,如变量替换、条件判断、循环结构、函数调用等,使得开发者可以将静态HTML模板与动态数据分离,提高了代码的可读性和维护性。 1. **安装与依赖**: 在项目中引入...

    Java项目Freemark生成静态页面及语法

    在这个例子中,`${title}`和`${user}`是变量,它们将在运行时由Java代码提供值。 在Struts2的Action类中,你需要定义这些变量并返回对应的Freemarker模板名。例如: ```java public class HelloWorldAction ...

    spring boot使用properties定义短信模板的方法教程

    同时,使用`@PropertySource`注解指定要加载的配置文件,并用`@Value`注解将模板内容注入到类的字段中: ```java import org.springframework.beans.factory.annotation.Value; import org.springframework.context...

    ruanjian-java-220212.pdf

    通过`@Autowired`注入`Environment`,并提供一系列静态方法供其他组件获取配置项。这些方法根据需求提供了不同参数版本,如获取指定类型的值、默认值等。 **配置文件优先级** 在Spring Boot中,外部配置文件的加载...

    JAVA面试八股文.pptx

    - **常用注解**:如`@SpringBootApplication`启动应用,`@Autowired`自动注入,`@Value`读取配置属性,`@RestController`创建RESTful控制器。 - **启动Tomcat**:通过`SpringApplication.run()`启动,内部会查找...

    面试题问题合集.docx

    - **方法区**:方法区(也称永久代)是唯一不会发生内存溢出的区域,因为它主要存放的是类的信息、常量、静态变量等数据,这些数据在类加载阶段就已经确定。 #### 垃圾回收机制 JVM 的垃圾回收机制主要是指自动...

    java最新面试宝典

    - 准备阶段:为静态变量分配内存并初始化为默认值。 - 解析阶段:将符号引用转化为直接引用。 - 初始化阶段:执行类构造器`()`。 - **面试考察要点:** - 类加载器的种类及其工作原理。 - 双亲委派模型的意义。...

Global site tag (gtag.js) - Google Analytics