SpringBoot的@Value注解如何设置默认值
作者:程序新视界 时间:2023-09-03 14:32:05
@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
标签:SpringBoot,@Value注解,默认值
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Struts和servlet不能共存问题解决方法
2022-09-20 07:26:59
C#操作SQLite方法实例详解
2023-03-13 17:58:53
c语言动态数组示例
2023-11-02 22:56:44
解决java main函数中的args数组传值问题
2021-06-24 12:46:13
![](https://img.aspxhome.com/file/2023/9/68579_0s.jpg)
Android ContentProvider查看/读取手机联系人实例
2021-10-13 07:10:13
![](https://img.aspxhome.com/file/2023/4/106054_0s.png)
java和 javaw 及 javaws的区别解析
2023-07-21 06:31:05
![](https://img.aspxhome.com/file/2023/9/64749_0s.png)
Flutter封装组动画混合动画AnimatedGroup示例详解
2022-12-29 17:17:05
浅谈HashMap中7种遍历方式的性能分析
2022-02-10 05:39:15
![](https://img.aspxhome.com/file/2023/1/118831_0s.png)
Flutter使用sqflite处理数据表变更的方法详解
2023-10-21 11:05:49
![](https://img.aspxhome.com/file/2023/3/139083_0s.webp)
c#入门之分支语句使用方法(三元运算符、if语句、switch语句)
2021-12-06 00:55:20
IntelliJ Idea常用11款插件(提高开发效率)
2022-08-31 14:08:23
![](https://img.aspxhome.com/file/2023/1/72541_0s.jpg)
springboot实用配置详细图文教程
2023-12-07 00:36:43
![](https://img.aspxhome.com/file/2023/8/124708_0s.png)
Android开发之MediaPlayer基本使用方法详解
2022-09-05 12:21:38
Android开发自定义双向SeekBar拖动条控件
2022-06-02 03:55:25
![](https://img.aspxhome.com/file/2023/1/139391_0s.png)
Java判断对象是否为空(包括null ,"")的方法
2022-11-26 13:50:25
一篇文章轻松搞懂Java中的自旋锁
2023-06-29 00:00:36
C#中四步轻松使用log4net记录本地日志的方法
2021-12-22 02:23:16
![](https://img.aspxhome.com/file/2023/0/106450_0s.png)
C# Split分隔字符串的应用(C#、split、分隔、字符串)
2021-12-01 23:13:51
C语言文件操作函数大全(超详细)
2023-07-15 06:20:42
一文看懂RabbitMQ消息丢失如何防止
2022-03-03 20:36:24
![](https://img.aspxhome.com/file/2023/9/64139_0s.jpg)