springBoot项目中使用@Value取值出现的问题及解决
作者:虹猫大侠 发布时间:2023-05-29 12:59:16
标签:springBoot,@Value,取值
使用@Value取值出现的问题
在springBoot项目中我们一般会把一些路径或者资源写在配置文件中,方便管理。
但是取得时候有可能会出现一些问题。
file.uploadFolder=E://upload/
1.一般情况下定义一个字段
在上面使用@Value("${名称}") 就可以得到值
@Value("${file.uploadFolder}")
private String uploadFolder;
2.但是通常我们会把它用在工具类当中
但是字段又被static修饰成为静态变量,使用这种方法就取不到值,我们拿到的就为null。
因此我们就要换一种取值方式,像下面这样就可以取到了。切记set方法不要带static!!!
private static String uploadFolder;
public static String getUploadFolder() {
return uploadFolder;
}
@Value("${file.uploadFolder}")
public void setUploadFolder(String uploadFolder) {
Base64Utils.uploadFolder = uploadFolder;
}
3.工具类最好加上@Component或者其他注解
让它由spring管理。
记springBoot使用@Value出现的乌龙
先看一下代码
server.port=8007
#mysql配置
url=jdbc:mysql://localhost:3306/lzy_zyg?useUnicode=true&characterEncoding=UTF-8
username=root
password=root
这是application.properties中填写的相关配置信息,其中mysql配置是作为外部配置信息来用的。
然后在需要的地方如下使用
@Configuration
public class JfinalDb
{
@Value("${url}")
private String dbUrl;
@Value("${username}")
private String dbUName;
@Value("${password}")
private String dbPwd;
...
}
使用的时候出现很诡异的问题,那就是命名设置的username和password是对的,通过本地连接也是对的,但是总是报连接认证失败的错误,并且用户名也不是root。
最后我将dbUName打印出来发现,完全不是root,而是我的主机名!
所以这里,切记不要在application.properties文件中自定义名称username,因为你取不到你想要的结果。
来源:https://blog.csdn.net/qq_35327989/article/details/105815667


猜你喜欢
- 前言RefreshIndicator是Flutter里常见的下拉刷新组件,使用是比较方便的。但由于产品兄弟对其固定的刷新样式很是不满,而且代
- 多线程内容大致分两部分,其一是异步操作,可通过专用,线程池,Task,Parallel,PLINQ等,而这里又涉及工作线程与IO线程;其二是
- 首先说说什么叫回调函数?在WINDOWS中,程序员想让系统DLL调用自己编写的一个方法,于是利用DLL当中回调函数(CALLBACK)的接口
- 1、直接使用getWindow().getDecorView().getRootView()直接使用getWindow().getDecor
- Android 开发的程序员开发程序的时候,一定为log而苦恼过吧。Eclipse老是Log找不到,是不是很让人不爽,虽然Android S
- 一、系统自动抛出异常当程序语句出现一些逻辑错误、主义错误或者类型转换错误时,系统会自动抛出异常例一public static void ma
- 理论上Object类是所有类的父类,即直接或间接的继承java.lang.Object类。由于所有的类都继承在Object类,因此省略了ex
- 前言前不久遇到一个问题,是公司早期的基础库遇到的,其实很低级,但是还是记录下来。出错点是一个 IO 流的写入bug,我们项目会有一种专有的数
- 介绍跨域CORS,全称是"跨域资源共享"(Cross-origin resource sharing)当页面发出跨域请求
- java 值Document解析xml详细介绍使用jar包:jdom.jar配置文件格式 global.xml一、获取输入的值组成的结点我们
- 测试例:PageElement pe = new PageElement();pe.LoadDataFromJsonString("
- 实现效果:Form1.cs代码:using System;using System.Collections.Generic;using Sy
- Android开发中有时需要在应用中或进程间传递对象,下面详细介绍Intent使用Bundle传递对象的方法。被传递的对象需要先实现序列化,
- 先直接看看效果吧初始情况 点击一个作为标记 再次点击后删除 3.这里还要感谢前辈的代码作为参考,毕竟以前也没有写过关于日历方面的东西,别人确
- 概述线程池的好处和使用本篇文章就不赘叙了,不了解的可以参考下面两篇文章:一文全貌了解线程池的正确使用姿势学习线程池原理从手写一个线程池开始那
- SpringBoot自带Tomcat,所以我们的项目可以单独部署,不需要依赖Window、Linux系统中的服务器,所以打包出来的Jar包是
- Bluetooth结构1、JAVA层frameworks/base/core/java/android/bluetooth/包含了bluet
- 如题,记录一些平常开发用的pom文件细节1.使用parent父类引用,解决依赖版本号不确定时自动匹配的问题<parent> &n
- 大二的时候做的课程设计,图片管理器,当时遇到图片很多的文件夹,加载顺序非常慢。虽然尝试用多个Thread加载图片,却无法保证图片按顺序加载。
- 一、使用 System.Xml.Serialization类1、定义元数据引入System.Xml.Serialization命名空间。XM