千家信息网

如何使用spring @value加载

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了如何使用spring @value加载的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用spring @value加载文章都会有所收获,下面我们一起
千家信息网最后更新 2026年11月03日如何使用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安全错误 数据库的锁怎样保障安全 互联网科技公司 互联网新科技 北京路客互联网科技有限公司 港股互联网科技股 广州互联网络科技有限公司 互联网科技上市公司 老年人脱离互联网科技的作文 现代科技和互联网有关系吗 互联网教育科技公司vipkid 语蝶互联网科技有限公司 青岛科技大学互联网大赛研究生 互联网科技商业 注册互联网科技公司经营范围大全 广西互联网科技孵化中心 中国科技创新与世界互联网大会 互联网行业科技股 世界互联网领先科技成果获奖 富国互联网科技002692 兰石爱特工业互联网科技分公司 互联网科技快速发展优美句子 江苏根荣互联网科技 涨乐互联网科技 贷财互联网科技 赫美联合互联网科技 恒生互联网科技指数跳水 996高科技互联网公司 梅州GM互联网络科技有限公司 保山互联网科技靠谱吗 河南商务圈互联网科技有限公司 广东猫王互联网科技有限公司电话
0