千家信息网

如何使用spring @value加载

发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,这篇文章主要介绍了如何使用spring @value加载的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用spring @value加载文章都会有所收获,下面我们一起
千家信息网最后更新 2025年11月10日如何使用spring @value加载

这篇文章主要介绍了如何使用spring @value加载的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用spring @value加载文章都会有所收获,下面我们一起来看看吧。

spring@value加载时机

@value是spring中一个用来注入类的成员变量的一种注解,其从配置文件中注入配置的值,需要在spring中配置下需要注入这个类PropertyPlaceholderConfigurer,有多种出入方式,如:

                                                                        classpath*:config/*.properties                                                                                

@Value注入是在spring注入该类的默认构造器之后,再进行注入的。

使用

org.springframework.beans.BeanUtils的public static T instantiateClass(Constructor ctor, Object... args)

进行实例化@Component的类。使用这个bean工厂DefaultListableBeanFactory。

使用

org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(final String beanName, final RootBeanDefinition mbd, final Object[] args)

来创建这个bean的实例,mbd中是一些类似这样的数据:

scope=singleton; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null

默认情况下spring管理的bean都是单例。

实例构造完成之后,这个时候@Value注解就会触发,org.springframework.beans.factory.annotation。

AutowiredAnnotationBeanPostProcessor的inject(Object bean, String beanName, PropertyValues pvs)

这个方法就会将bean的属性注入进去了。

注入属性完成后(下图第557行),spring再去加载其他的bean。@Value其实也是使用了@AutoWire的机制。

由于spring只会在初始化时,加载这个类的构造器,如果需要修改配置文件中的值,可以通过spring上下文获取bean实例,使用set方式修改值。

@Value加载中文时出现乱码,可以在PropertyPlaceholderConfigurer配置编码格式,上文的code中有调到,也可将中文改成unicode编码。

说说@Value注入时问题

@Value设置默认值

使用@Value注解将变量进行自动注入的时候,经常会出现的一个问题就是我们可能会由于在配置参数中忘记设置该参数造成整个项目报错,其实我们可以通过给被@Value注解作用的变量进行注入的时候如果没有找到该配置参数时设置一个默认值,相当于是一个兜底的方案:

没有默认值的用法:

@Value("${spring.port}")private String port;

增加默认值的用法:

@Value("${spring.port:8080}")private String port;

这里需要注意的是:

1.即使你的配置参数的值是String类型的话也不需要加双引号

2.被static修饰的变量通过@Value会注入失败

使用@Value注入配置值的时候报错

Consider defining a bean of type‘java.lang.String’ in your configuration.

这里是因为,我在同一个class 里面,引用了另一个注解@AllArgsConstructor

后面我对比删除了@AllArgsConstructor,只是留下@Value 。项目正常启动。

结论:@AllArgsConstructor 与 @Value 注解不能同时使用

关于"如何使用spring @value加载"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"如何使用spring @value加载"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

配置 注解 参数 变量 实例 时候 知识 内容 可以通过 属性 文件 方式 篇文章 编码 问题 项目 中文 构造器 上下 上下文 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 服务器怎么测试网络运行 软件开发公司项目章程 网站访问acess数据库 青少年建设网络安全 上海net软件开发大概要多少钱 极限网络技术 阿里云服务器基础运维与管理 东莞睿几何互联网科技有限公司 手机网站 数据库设计 网络安全方案经济可行性 软件开发 故事 南京理工大学激光毁伤数据库 2018 国家网络安全 克拉克森数据库使用 国家安全观之网络安全 mysql 不能插入数据库 华为服务器v2硬盘设置直通 lol 代理服务器 属于数据库属性的窗口选项是 c c 软件开发工程师笔试 网吧服务器怎样连接电脑 海湾五千型主机数据库怎么样调取 服务器安装软件后连接不上主机 网贷风险数据库包含哪些数据 上海惠欣网络技术服务工作室 计算机网络技术四级教材电子版 软件开发码农 剑灵最大服务器多大 华为服务器v2硬盘设置直通 浙江营销软件开发系统
0