SpringBoot的@Value注解如何设置默认值
作者:程序新视界 发布时间:2023-09-03 14:32:05
标签:SpringBoot,@Value注解,默认值
@Value注解设置默认值
在Spring Boot中,如果使用@Value注解对属性进行赋值,但如果在配置文件或启动参数中未指定对应的参数值,则会抛出异常。异常信息往往是对应注入属性的类实例化失败。
此时,需要对@Value对应的值进行配置,或设置默认值。
设置方法如下:
@RestController
public class ConfigController {
// ①未指定默认值
@Value("${user.username}")
private String username;
// ②指定默认值为“unknown”
@Value("${projectName:unknown}")
private String projectName;
}
针对以上两个@Value的使用,如果username对应的属性值未在application.properties文件中配置或未在java -jar命令中传递参数,那么启动时将抛出异常。
而针对第二种方式,通过“:”指定如果获取不到该参数值时所使用的默认值,则启动时不会出现异常信息。
@Value注解默认值使用及效果测试
使用@Value注解的代码
注意事项:
(1)注解修饰的变量不能是final、static。
(2)使用@Component修饰所在类交给spring管理。
(3)使用时要用@Autowried注入,不能new对象。
(4)${address-config:浙江省杭州市西湖区} address-config为配置文件属性名,如果配置文件没有配则使用默认值,当前默认值为‘浙江省杭州市西湖区’。
注意使用的是${} 而不是 #{}
User.java
package com.oashiro.example.test;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class User{
public String address;
@Value("${address-config:浙江省杭州市西湖区}")
public void steAddress(String address){
this.address=address;
}
public String getAddress(){
return this.address;
}
@Override
public String toString() {
return "User{" +
"address='" + address + '\'' +
'}';
}
}
Junit测试
UserTest.java
package com.oashiro.example.test;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest
class UserTest {
@Autowired
private User user;
@BeforeEach
public void setup(){
System.out.println("开始测试1");
}
@AfterEach
public void teardown(){
System.out.println("测试结束1");
}
@Test
public void printUser(){
System.out.println(user);
//预期结果(浙江省)与实际获取的默认结果(浙江省杭州市西湖区)作对比
assertEquals("浙江省",user.getAddress());
}
}
测试结果
来源:https://hello.blog.csdn.net/article/details/104144658


猜你喜欢
- 在java项目开发中。最开始换行符大家一般是在idea中设置新文件为LF,并且对旧文件通过IDEA下方的点击来更换换行符。很显然,对于几千文
- 背景使用flowable自带的flowable-ui制作流程图使用springboot开发流程使用的接口完成流程的业务功能一、flowabl
- 主要使用的类:java.text.DecimalFormat1。实例化对象,可以用如下两种方法:DecimalFormat df=(Deci
- 一、前言最近写了个项目,前端还没写,需要部署到服务器给女朋友实现前端,可是不熟悉Linux的我,蹑手蹑脚,真的是每一步都是bug,可谓是步步
- 菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu)、上下文菜单(Co
- 继续练习自定义View。。毕竟熟才能生巧。一直觉得小米的时钟很精美,那这次就搞它~这次除了练习自定义View,还涉及到使用Camera和Ma
- 一、前言canal:阿里巴巴 MySQL binlog 增量订阅&消费组件https://github.com/alibaba/ca
- Android 中下拉菜单,即如html中的<select>,关键在于调用setDropDownViewResource方法,以
- 学C#的原因其实挺简单的,因为一直对游戏挺感兴趣,查了下比较流行的游戏引擎Unity的主要开发语言是C#,所以就决定从C#入手,学学面向对象
- logback filter过滤某个类 屏蔽某个类使用logback配置日志文件,有的时候需要我们过滤或者屏蔽掉某个类的日志,便可以通过以下
- 一、二叉排序树定义1.二叉排序树的定义二叉排序树(Binary Sort Tree)又称二叉查找(搜索)树(Binary Search Tr
- 本文为大家分享了Android自定义Toast之WindowManager,供大家参考,具体内容如下Toast:WindowManager三
- 通过将PDF格式转换为PDF/A格式,可保护文档布局、格式、字体、大小等不受更改,从而实现文档安全保护的目的,同时又能保证文档可读、可访问。
- 实验环境hadoop版本:3.3.2jdk版本:1.8hadoop安装系统:ubuntu18.04编程环境:IDEA编程主机:windows
- 读取xml配置bean(@ImportResource)1、应用场景旧框架SSM项目移行到SpringBoot中,xml配置文件很齐全,就可
- 本文实例讲述了Java中计算时间差的方法。分享给大家供大家参考。具体如下:假设现在是2004-03-26 13:31:40过去是:2004-
- 不小心将.idea文件提交后无法删除1、同步git最新代码,将.idea文件同步下来如果同步不下来,看看是不是在同步的时候与本地文件产生了冲
- 场景女朋友最近被安排了一个企业微信添加客户的沙雕活,然后跟我吐槽说,每天都要加,都想离职了,为了不让女朋友那么难受,突然想到可以使用Robo
- IO感觉上和多线程并没有多大关系,但是NIO改变了线程在应用层面使用的方式,也解决了一些实际的困难。而AIO是异步IO和前面的系列也有点关系
- 1.PDF文件简介PDF是可移植文档格式,是一种电子文件格式,具有许多其他电子文档格式无法相比的优点。PDF文件格式可以将文字、字型、格式、