SpringBoot:SpringBoot中@Value注入失败
1. 第一步检测语法是否正确
- @Value("${test}")
- private String test;
2.第二步检测配置文件中是否有进行配置
- url=test
username=username
password=password
3.第三步检测是否增加了@Component注解
在spring中,使用了spring的注解,那么就需要使用spring来进行管理对象,而不能自己进行new,否则就会导致失败。
- @Component //将类交给spring进行对象管理
- public class DBUtils {
- @Value("${url}")
- private String url;
- @Value("${username}")
- private String username;
- @Value("${password}")
- private String password;
- }
4.第四步检测代码中的书写方式
不要再无参构造器中,进行new对象的操作。否则就会造成@Value注解失败。(本人就是踩到这步坑)。
初始化上下文可以使用@PostConstruct注解来进行初始化,他会在spring加载完信息后,进行调用并且只调用一次。
5.@Value无法注入static属性
使用@Value直接放在static的属性上是无法注入内容的!!!此方式会一直是null.
原因
发现@value不能直接注入值给静态属性,spring 不允许/不支持把值注入到静态变量中;spring支持set方法注入,我们可以利用非静态setter 方法注入静态变量,并且使用@Value的类必须交个spring进行管理.就如同@Autowired有时无法注入一样.
详细说明:https://blog.csdn.net/sqlgao22/article/details/100100314
改进
使用setter方法进行属性的赋值,并且setter方法不能有static
idea自动生成的方法会有static,需要手动删除.
- @Component //将类交给spring进行对象管理
- public class DBUtils {
- private static String url;
- private static String username;
- private static String password;
- @Value("${url}") //删除掉static
- public void setUrl(String url) {
- DBUtils.url = url;
- }
- @Value("${username}")
- public void setUsername(String username) {
- DBUtils.username = username;
- }
- @Value("${password}")
- public void setPassword(String password) {
- DBUtils.password = password;
- }
- //查看是否注入
- public static void get() {
- System.out.println("=====url====="+url);
- System.out.println("=====username====="+username);
- System.out.println("=====password====="+password);
- }
- }
测试
- @RequestMapping("/get")
- @ResponseBody
- public String get() {
- DBUtils.get();
- return "get";
- }
测试后输出:
成功注入属性.
文章转载至:https://blog.csdn.net/sqlgao22/article/details/100096348
SpringBoot:SpringBoot中@Value注入失败的更多相关文章
- SpringBoot JPA 中无法注入 JpaRepository 接口的问题及解决方案
错误: 在Springboot 框架中使用JPA的过程中,怎么来实现数据库操作底层的交互呢?Spring JPA其实已经提供了一套很全面的解决方案,实现对数据库的增.删.查.改只需要继承JPA实现类 ...
- ssm中mapper注入失败的传奇经历
最近因为要测试一个功能,需要用最短的时间来启动服务,开启测试程序,但平常所用的框架中已经集成了各种三方的东西,想着那就再重新搭建一个最简单的ssm框架吧. 搭建可参考:简单ssm最新搭建 搭建过程并不 ...
- 【Intellij idea】spring中@Autowired注入失败
@Autowired注入失败失败的解决办法? 现有的解决的方案是: 打开file-settings或者ctrl+alt+s -> Editor 然后在Inspections 点击搜索栏 输入Sp ...
- 解决 Springboot中Interceptor拦截器中依赖注入失败
问题: 在Springboot拦截器Interceptor中使用@Resource依赖注入时,发现运行的时候被注解的对象居然是null,没被注入进去 原配置为: @Configurationpubli ...
- 记一个SpringBoot中属性注入失败的问题Consider defining a bean of type ''' in your configuration
今天遇到的一个问题: 代码检查了好几次,都没有错误,但是启动时就会报错Consider defining a bean of type ''' in your configuration. 启动类在c ...
- SpringBoot中service注入失败(A component required a bean of type 'XXService' that could not found)
先写了JUnit,发现启动不了,注释掉有问题的service也不可以.可能是因为spring开始时会加载所有service吧. 按照网友们的说法,一般需要检查: 1.入口类有没有写MapperScan ...
- 关于springboot项目中自动注入,但是用的时候值为空的BUG
最近想做一些web项目来填充下业余时间,首先想到了使用springboot框架,毕竟方便 快捷 首先:去这里 http://start.spring.io/ 直接构建了一个springboot初始化的 ...
- springboot拦截中自动注入的组件为null问题解决方法
一.写SpringUtil类来获取Springh管理的类实例,判断是否注入成功,如果没有注入成功重新获取注入 package com.util; import org.springframework. ...
- Springboot 拦截器 依赖注入失败
解决方案2种. ====1 https://blog.csdn.net/shunhua19881987/article/details/78084679 ====2 https://www.cnblo ...
随机推荐
- vim 编辑器高级用法
vim编辑器介绍 如果没有安装vim使用下面方式安装 yum -y install vim vi与vim的不同 两者最大的不同:vim可以高亮显示,vi不可以. vim三种工作模式 普通模式 # 光标 ...
- Docker-Compose入门-(转载)
Compose 是一个用户定义和运行多个容器的 Docker 应用程序.在 Compose 中你可以使用 YAML 文件来配置你的应用服务.然后,只需要一个简单的命令,就可以创建并启动你配置的所有服务 ...
- mysql基础之忘掉密码解决办法及恢复root最高权限办法
如果忘记了mysql的root用户的密码,可以使用如下的方法,重置root密码. 方法一: 1.停止当前mysql进程 systemctl stop mariadb 2.mysql进程停止后,使用如下 ...
- Java 事务的隔离级别
引言 之前关于事务的文章已介绍了事务的概念以及事务的四个属性(ACID),相信你对事务应该有所认识和了解. 本篇文章是关于事务的隔离性,介绍数据库提供的多种隔离级别. 数据库访问的并发性问题 所谓事务 ...
- 7.json&pickle及软件目录结构规范
json(可以序列化简单数据类型,用于不同语言之间的数据交换传输)import jsonjson.dumps() 写入json.loads() 读取json.dump(info,f) == f.wri ...
- Linux 系统日志和系统信息常用命令介绍
日志文件 日 志 文 件 说 明 /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全相关的日志信息 / ...
- 安装oracle 时“[INS-30014]无法检查指定的位置是否位于 CFS上”问题
错误截图: 错误信息: [INS-30014]无法检查指定的位置是否位于 CFS上 解决方案: 通过修改hosts文件,向C:\Windows\System32\drivers\etc\hosts文件 ...
- 在 Ubuntu 上安装 .NET SDK 或 .NET 运行时
在wsl Ubuntu 20.04上面安装dotnet链接 https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-ubuntu Ubun ...
- 基于Jira的运维发布平台的设计与实现
作者:乔克 公众号:运维开发故事 上线发布是运维的日常工作,常见的发布方式有: 手动发布 Jenkins发布平台 Gitlab CI ...... 除此之外还有需要开源软件,他们都有非常不错的发布管理 ...
- ubuntu设置允许root用户登录
一.允许ssh登录root用户(命令行) 1.修改root 密码,sudo passwd root 2.修改ssh配置, sudo vim /etc/ssh/shd_config,修改文件中的Perm ...