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
0
投稿
猜你喜欢
- 什么是反射?反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动
- 本文实例为大家分享了AJAX二级联动效果的具体代码,供大家参考,具体内容如下Ajax.jsvar createAjax = function
- 开始学习WebSocket,准备用它来实现一个在页面实时输出log4j的日志以及控制台的日志。首先知道一些基础信息:1.java7 开始支持
- java中的final关键字详解final的作用随着所修饰的类型而不同  
- 前言最近遇到一个Jvm old过高的案例,现象是一个站点的jvm old区过高,分析原因是,原来的设计方案有问题,给前端返回的数据里面包含了
- 详解Java注解的实现与使用方法Java注解是java5版本发布的,其作用就是节省配置文件,增强代码可读性。在如今各种框架及开发中非常常见,
- 前言总结java常见的锁区分各个锁机制以及如何使用使用方法锁名考察线程是否要锁住同步资源乐观锁和悲观锁锁住同步资源后,要不要阻塞不阻塞可以使
- 创建hander文件夹在 java 源码目录下创建hander文件夹, 在该文件夹下创建CustomAuthenticationFailHa
- 1、项目引用System.Management库文件2、创建HardwareHandler.cs类文件namespace HardInfoT
- 大多数网站会设置用户权限,如过滤非法用户,用户不登录时不能进行访问,或者设置访问的权限,如部分内容仅对VIP开放等等,这些权限的控制都可以用
- Android 监听手机GPS打开状态实现代码GPS_Presenterpackage com.yiba.core;import andro
- 本文实例讲述了Java面向对象程序设计多态性。分享给大家供大家参考,具体如下:多态:具有表现多种形态的能力的特征(同一个实现接口,使用不同的
- 本文主要介绍LINQ查询操作符LINQ查询为最常用的操作符定义了一个声明语法。还有许多查询操作符可用于Enumerable类。下面的例子需要
- 本教程适合新手小白,Java7之前的版本是没有内置JavaFx的,Java7-10是内置JavaFx的,但是到了Java10以后的版本,Or
- 一、获取接口请求的数据可以在Interceptor的afterCompletion中实现但是要重写RequestWrapper代码记录如下:
- Java 读取外部资源的方法详解在Java代码中经常有读取外部资源的要求:如配置文件等等,通常会把配置文件放在classpath下或者在we
- 前文传送门:NioEventLoop处理IO事件执行任务队列继续回到NioEventLoop的run()方法:protected void
- servlet、filter、listener、interceptor之间的区别和联系一、概念1.servlet:servlet是一种运行服
- 一、String类String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象。java把Str
- File类简介package com.file;import java.io.File;import java.io.IOException