@Value注解介绍:
作为Spring的一个常用注解,其作用是通过注解将常量、配置文件中的值和其他bean的属性值注入到变量中,作为变量的初始值。

使用方法如下:

  • @Value(“常量”) 常量,包括字符串,网址,文件路径等。
 // 注入常量@Value("Pavel")private String tenantName;
  • @Value(“${}” : default_value) 读取配置文件。
    // 读取配置中database的值@Value("${spring.redis.database}")private int database;

配置文件:

spring:redis:database: 0
  • @Value(“#{}”? : default_value) 读取注入bean的属性。
    @Value("#{user.username}")private String tenantName;

注册到Spring容器中的bean对象

 @Data@Componentpublic class Tenant {private String tenantName;}

目前遇到的问题,当注入的变量是静态变量时,无法拿到对应的值。

@Value ("${engine.email.sender}")
private static String emailSender;

如上所示,此时程序不会报错,但emailSender值必为null,因为Spring不支持把值注入到静态变量中。

面对这种情况,若我们仍想使用@Value注解,可以结合set注入,利用非静态方法注入静态变量使其生效。代码如下:

@Slf4j
@Component
public class EmailUtil {// 邮件senderprivate static String emailSender;// 邮件回复地址private static String replyAddress;@Value ("${engine.email.sender}")public void setSender(String sender) {emailSender = sender;}@Value("${engine.email.replyAddress}")public void setReplyAddress(String address) {replyAddress = address;}
}

需注意:定义的类一定要有有@Component或者@Service等注解。

其实,并不建议大家使用这种形式进行注入,因为提供了set方法之后,原本的静态变量有可能被改变了。一帮情况下,静态变量都是final形式的,我们都不太希望变量能改变。但有时候一定要用@Value注入,这也是一种解决方案。

欢迎大家关注我的公众号!pavel随笔,分享工作时遇见的问题与解决方案,再就是一些学习笔记。

@Value注入静态变量(static)相关推荐

  1. 静态变量static(C)

    static static是C语言关键字之一. static 数据类型用来给变量创建永久存储空间.静态变量在函数间调用时保持他们的值不变. 它的语法结构为: static c_type data_na ...

  2. 静态变量(static variable)

    静态变量(static variable) 我们可以创建具有 块作用域.无链接.静态存储期 的局部静态变量.其与局部自动变量一样,具有相同的作用域,但是程序在离开它们所在函数后,静态变量不会消失,在多 ...

  3. java 静态全局变量_静态变量static和全局变量global

    静态变量static , 全局变量global 静态变量 在java也叫类变量从名字可以看出它是属于某个类的而不是类的实例.它的关键字是static存储在静态存储区,当程序执行,类的代码被加载到内存, ...

  4. Systemverilog 静态变量 (static) 与 动态变量(automatic) 区别

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 静态变量 Static 动态变量 Automatic 一.静态变量和动态变量的定义 二.静态变量与动态变量应用举例 总结 静 ...

  5. C语言静态变量static的分析

    对C语言静态变量static分析,解释了static为什么在局部变量里面定义的时候不会随着函数执行完毕而销毁,也稍微用解释了静态存储区和动态存储区的小知识 文章目录 学习static前要先认识 sta ...

  6. 静态变量static的理解

    static static是C语言关键字之一. static 数据类型用来给变量创建永久存储空间.静态变量在函数间调用时保持他们的值不变. 它的语法结构为: static c_type data_na ...

  7. @Value注入不生效,@Value注入静态变量

    当使用@Value注入配置参数时报错,报错原因不一定是@Value注入失败. 可能是用到配置参数的地方需要的是静态配置参数.所以解决办法是改成get()获取. 改正前 private static f ...

  8. 使用Apollo 注入静态变量

    使用apollo为静态变量赋值和普通变量赋值的区别 /*** 为静态变量赋值开启此注解*/ @Component /*** 开启Apollo配置*/ @EnableApolloConfig publi ...

  9. c++ 类中静态变量 static

    类中的静态变量 由于声明为static的变量只被初始化一次,因为它们在单独的静态存储中分配了空间,因此类中的静态变量由对象共享.对于不同的对象,不能有相同静态变量的多个副本.也是因为这个原因,静态变量 ...

  10. php的静态变量static在函数内部

    静态变量放在函数内 <?phpheader('content-type:text/html;charset=utf-8');function fun(){static $num=1;$num++ ...

最新文章

  1. abaqus高性能服务器怎么用,高性能计算平台ABAQUS任务调度使用说明作者陈林E-Mailchenlin.PDF...
  2. ubuntu 13.04 gnome terminal打开默认最大化方法
  3. PHP家庭账单系统,PHP+SQLite 多用户记账系统.家庭在线记账理财PHP管理系统.
  4. 网站建设需遵循用户访问习惯
  5. 高端手机市场,拼配置还是拼安全
  6. windows linux 融合,Windows和Linux的设备驱动框架的对比融合研究
  7. Spark Streaming(二)Flume
  8. 中油即时通信电脑版_联想超智能电脑横空出世 电脑适应人已成现实
  9. 求一份100行左右的C语言程序,求4个C语言程序 每个100行左右 大一水平的
  10. 在线可视化python网站_Python的可视化工具概述
  11. js代码测试。【一定要在真实工程下来测试是否好用】
  12. 数字电路与系统-知识点2
  13. 断电MySQL起不来_急求mysql 断电后无法启动解决方法!!!!
  14. MacOS ClashX 配置代理端口为0问题7890 配置iterm2终端代理
  15. 手把手教你调用微信扫一扫,三分钟包会
  16. matlab 八连通,科学网—四连通和八连通概念理解 - 贺飞扬的博文
  17. 从docker 拉去指定版本的镜像
  18. 笔记本电脑没有声音如何解决
  19. b站老是服务器中断,​B站就服务器故障致歉,服务器连接失败原因与解决方法...
  20. C++ Primer Plus 编程练习3

热门文章

  1. Xubuntu22.04安装dock美化任务栏
  2. Elasticsearch:Script fields 及其调试
  3. 我用前世的五百次回眸换今生与你一次擦肩而过
  4. onap桂林版部署教程
  5. 制作集成SATA、RAID和AHCI驱动的Windows XP sp3 安装光盘
  6. 服务器带宽上行与下行是什么意思,有什么区别
  7. css怎么修改图片像素,怎么改变图片宽度_word怎么改变图片像素大小
  8. 保留两位小数除法算式_小数除法计算题100道
  9. 在linux中 要删除abc目录,在Linux中,要删除abc目录及其全部内容的命令为()A.rmabcB.rm-rabcC.rmdirabcD.rmdir-rabc...
  10. dmg文件 linux,Linux通过命令行建立dmg文件的方法