当前位置: 首页 > news >正文

Spring 静态属性赋值 @value 注入静态属性 @Value注解用法

Spring 静态属性赋值 @value 注入静态属性 @Value注解用法

一、@Value 用法

        1、普通属性赋值 --- 配置文件中若无 user.val.name  属性,则会报错,服务启动失败!

@Value("${user.val.name}")

private String name ;

        2、普通属性赋值 --- 默认值,配置文件中若无 user.val.name 属性, 不会报错。

@Value("${user.val.name:小明}")
private String name ;

        3、静态属性赋值 --- 错误的

@Value("${user.val.age}")
private static Integer age ;

        

        3.2、静态属性赋值 --- 错误的 ,注意:方法被 static 关键词修饰。

@Value("${user.val.age}")
public static void setAge(Integer age) {
    UserVal.age = age;
}

        3.3、静态属性赋值 --- 正确的 , 没有 static 修饰

@Value("${user.val.age}")
public  void setAge2(Integer age) {
    UserVal.age = age;
}

二、Spring 静态属性赋值

        1、假设在Spring中有一个静态属性,还可以通过其他的那些方法赋值呢?

private static Integer age ;

        2、使用 @PostConstruct 注解,实现静态属性赋值

@Value("${user.val.age}")
private Integer age2;

/**
 * 使用 @PostConstruct 注解,实现静态属性赋值
 */
@PostConstruct
public  void setAge3(){
    UserVal.age = age2;
}

        3、实现 InitializingBean 接口,实现静态属性赋值

@Value("${user.val.age}")
private Integer age3;

/**
 * 实现 InitializingBean 接口,实现静态属性赋值
 */
@Override
public void afterPropertiesSet() throws Exception {
    UserVal.age = age3;
}

三、总结

        1、注意点: idea / eclipse ,自动生成 静态属性的 set/get方法时,会自动加上 static 静态修饰,在使用 @Value注解注入值的时候,会导致注入不进去

/**
 * static 静态属性
 */
private static String addr;

/**
 *  idea /eclipse 自动生成的 set 方法 ,
 *  包含 static 修饰,导致 @Value 属性注入无效 (实际未执行!)
 */
@Value("${user.val.addr}")
public static void setAddr(String addr) {
    UserVal.addr = addr;
}

相关文章:

  • 【零基础学QT】第九章 窗口美化QSS的使用
  • aws codesuit workshop
  • Linux内存管理——段页式访问
  • Hadoop基础学习笔记
  • 微信小程序 - 页面插入添加 Banner 广告超详细教程(支持自定义样式、位置、大小等)及注意事项
  • JavaScript笔记9-节点操作
  • 【YOLOv7】使用 YOLOv7 做目标检测 (使用自己的数据集 + 图解超详细)
  • 【C语言】break 关键字
  • sql窗口函数学习笔记
  • 记:谷歌开发者大会2022——共码未来
  • vue3 + vite 性能优化 ( 从5s -> 0.5s )
  • SpringBoot 静态资源(static)无法访问问题404
  • 混合策略改进的麻雀搜索算法-附代码
  • SNARK性能及安全——Prover篇
  • Docker的安装与操作
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【mysql】环境安装、服务启动、密码设置
  • 5、React组件事件详解
  • flutter的key在widget list的作用以及必要性
  • ⭐ Unity + OpenCV 实现实时图像识别与叠加效果
  • Xmanager 远程桌面 CentOS 7
  • 多线程 start 和 run 方法到底有什么区别?
  • 给初学者:JavaScript 中数组操作注意点
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 警报:线上事故之CountDownLatch的威力
  • 如何胜任知名企业的商业数据分析师?
  • 正则学习笔记
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • ​一些不规范的GTID使用场景
  • # Redis 入门到精通(九)-- 主从复制(1)
  • #{} 和 ${}区别
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • #if #elif #endif
  • #数据结构 笔记三
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (PySpark)RDD实验实战——求商品销量排行
  • (分类)KNN算法- 参数调优
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (算法)Game
  • (一)Dubbo快速入门、介绍、使用
  • (译)2019年前端性能优化清单 — 下篇
  • (原创)可支持最大高度的NestedScrollView
  • (正则)提取页面里的img标签
  • (转)EXC_BREAKPOINT僵尸错误
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET 发展历程
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .Net的C#语言取月份数值对应的MonthName值
  • .NET的微型Web框架 Nancy
  • .NET文档生成工具ADB使用图文教程