解决SpringBoot @value注解取不到值的问题

关于@value的springapplication容器的问题

1.在src/main/resources下创建stu.properties文件

##
student.name=Tom
student.age=22
student.birthday=1996/01/10
student.sex=true
student.hobbies[0]=swimming
student.hobbies[1]=basketball
student.skills[0]=programming
student.skills[1]=test
student.address.province=henan
student.address.city=zhengzhou

2.创建实体类

package com.fcy.entity;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
@PropertySource({"classpath:stu.properties"})
public class Student {
  @Value("${student.name}")
  private String name;
  @Value("${student.age}")
  private int age;
  @Value("${student.sex}")
  private boolean sex;
  @Value("${student.birthday}")
  private Date birthday;
  private String[] hobbies;
  private List<String> skills;
  private Map<String, Object> address;
 //省略getter和setter方法
}

3.错误的方法

@RestController
public class StudentController {
 @RequestMapping("/getStu")
 public Student getStu() {
  Student stu=new Student();
  System.out.println(stu);
  return stu;
 }
}

4. 效果如图

5.正确的方法为

总结:

从上面方法得知,第一种方法没有获取到值是因为没有在springapplication容器里获取student的bean,因为在实体类加上了@comment注解,这个注解就是把student变成一个bean,才能读取到,不能new 一个对象调用

SpringBoot @Value注解设置默认值

默认值的设置:

符合SpEL表达式

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • SpringBoot使用@Value实现给静态变量注入值

    SpringBoot中使用@Value()只能给普通变量注入值,不能直接给静态变量赋值 例如 application-dev.properties 配置文件有如下配置: 给普通变量赋值时,直接在变量声明之上添加@Value()注解即可,如下所示: 当要给静态变量注入值的时候,若是在静态变量声明之上直接添加@Value()注解是无效的,例如: 虽然没有编译和运行上的报错,经调试可知这种注解方式mailUsername.mailPassword.mailHost的值都是null,也就是说直接给静态变

  • Springboot @Value使用代码实例

    这篇文章主要介绍了Springboot @Value使用代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 entity.Book package com.draymonder.amor.entity; import java.util.List; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.contex

  • springboot中@Value的工作原理说明

    我们知道springboot中的Bean组件的成员变量(属性)如果加上了@Value注解,可以从有效的配置属性资源中找到配置项进行绑定,那么这一切是怎么发生的呢? 下文将简要分析一下@Value的工作原理. springboot版本: springboot-2.0.6.RELEASE 概述 springboot启动过程中,有两个比较重要的过程,如下: 1 扫描,解析容器中的bean注册到beanFactory上去,就像是信息登记一样. 2 实例化.初始化这些扫描到的bean. @Value的解析

  • Springboot在有参构造方法类中使用@Value注解取值

    我们在Springboot中经常使用@Value注解来获取配置文件中的值,像下面这样 @Component class A { @Value("${user.value}") private String configValue; public void test() { System.out.println(configValue); } } 但有时我们需要这个类拥有一个有参的构造方法,比如 @Component class A { @Value("${user.value

  • SpringBoot 使用 @Value 注解读取配置文件给静态变量赋值

    1.application.properties 配置文件 mail.username=xue@163.com mail.password=xue mail.host=smtp.163.com mail.smtp.auth=true 2.给普通变量赋值,直接在变量上添加 @Value 注解 import org.springframework.beans.factory.annotation.Value; public class MailConfig { @Value("${mail.user

  • Springboot @Value获取值为空问题解决方案

    这篇文章主要介绍了Springboot @Value获取值为空问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在spring中,常常使用 @Value("${property}") 从application.properties中取值,需要注意两点 使用 @Value 的类不能使用 new 关键字进行实例化对象,必须采用 依赖注入的方式进行实例化 不能使用显式的构造方法 否则,将取不到值.解决方法如下: 删除显式的构造方法

  • Springboot中@Value的使用详解

    Springboot通过@Value注解将配置文件中的属性注入到容器内组件中(可用在@Controller.@Service.@Configuration.@Component等Spring托管的类中) 1.普通字符串注入 例:yml中存在key: name: zs @Value注入 @Value("${name}") public String name; 当yml中的name没有对应值时,即yml中为: name: 此时字符串name的值为"" 可设置注入属性的

  • 解决SpringBoot @value注解取不到值的问题

    关于@value的springapplication容器的问题 1.在src/main/resources下创建stu.properties文件 ## student.name=Tom student.age=22 student.birthday=1996/01/10 student.sex=true student.hobbies[0]=swimming student.hobbies[1]=basketball student.skills[0]=programming student.s

  • 关于@Value注解取不到值的几种情况

    目录 @Value注解取不到值的几种情况 几种获取不到值的特殊情况如下 @Value取不到值的原因 可能原因有 正确方式 @Value注解取不到值的几种情况 在spring的框架中,我们经常使用@Value注解来获取定义在application.properties的属性值,正常情况下是可以轻松的获取到值的,但是有几种特殊情况下是获取不到值的,在这记录下,以防止以后犯错误.正常获取的用法如下: 在application.properties中定义一个属性值: 正常情况下在代码里面这样获取: @V

  • 解决SpringBoot中使用@Async注解失效的问题

    错误示例,同一个类中使用异步方法: package com.xqnode.learning.controller; import com.fasterxml.jackson.core.JsonProcessingException; import org.springframework.scheduling.annotation.Async; import org.springframework.web.bind.annotation.GetMapping; import org.springf

  • 解决springboot利用ConfigurationProperties注解配置数据源无法读取配置信息问题

    @ConfigurationProperties是springboot新加入的注解,主要用于配置文件中的指定键值对映射到一个java实体类上.那么它是怎么发挥作用的呢?下面我们将揭开@ConfigurationProperties的魔法. ConfigurationPropertiesBindingPostProcessor这个bean后置处理器,就是来处理bean属性的绑定的,这个bean后置处理器后文将称之为properties后置处理器.你需要知道以下几件事: ioc容器context的e

  • .NET中TextBox控件设置ReadOnly=true后台取不到值三种解决方法

    当TextBox设置了ReadOnly="true" 后,要是在前台为控件添加了值,后台是取不到的,值为"空" 原理没想通,说不清楚微软是出于什么考虑的,不过有时是要我们能通过前台脚本来填充值,并不希望用户修改其控件内容,这时就比较尴尬了. 刚开始是换成Html 里的 <input type="text" readonly="readonly" > ,不过后来发现这个工作量是很大的, 所以网上搜了下,没找出Text

  • java中Servlet Cookie取不到值原因解决办法

    java中Servlet Cookie取不到值原因解决办法 现象: 在测试带Cookie的HTTP请求时发现,服务端用request.getHeader("cookie")可以去到值; 但是用request.getCookies()却不行 Cookie mycookies[] = request.getCookies(); 中永远获取不到uid的值:(80端口号除外) 原因: 查了浏览器的具体cookie值,发现 http://localhost:8080/ 访问的时候,cookie值

  • 解决python中遇到字典里key值为None的情况,取不出来的问题

    在python 命令行界面里,是可以去取key为None的value值. 在脚本里面就取不出了,可以用如下的方式解决. hosts = {"a":"111", "None":b, "c":"333"} hname = "" for (k,v) in hosts.items(): if k == None: print " value=%s " % (v) else:

  • 解决ng-repeat产生的ng-model中取不到值的问题

    最近遇到在ng-repeat产生的textarea中绑定ng-model后,在js中取不到ng-model值的问题. html的代码结构如下 <div class="ques-item hide1 show9a" id="q10"> <div class="ques-item-question"> 10.{{questions[9].questionContent}} </div> <div class=

  • angularJs select绑定的model取不到值的解决方法

    前端直接绑定值,不传参数,controller中会一直取到初始化的值,无法实时获取前端select改变的值. 解决方法一:前端调用方法的时候,一边传参数(亲测可用) <select ng-model="speed" name="speed" ng-change="vm.h5Video().Playspeed(speed)> <option value="1" selected="selected"&

  • vue data有值,但是页面{{}} 取不到值的解决

    我的问题出在js引入的顺序不对,导致不能正常显示vue中的值 正确的顺序应该是: 先引入vue的js--------html代码-----最后引入自己写的js 补充知识:vue中子组件的created.mounted生命周期钩子中获取不到props中的值问题 父子组件通信 这个很简单,父组件中使用v-bind绑定传送,子组件使用props接收即可 . 例如:在父组件中 <template> <div> <div :Data="Data"></d

随机推荐