软件编程
位置:首页>> 软件编程>> java编程>> SpringBoot的@Value注解如何设置默认值

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());
   }
}

测试结果

SpringBoot的@Value注解如何设置默认值

来源:https://hello.blog.csdn.net/article/details/104144658

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com