开发者

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

目录
  • @Value注解设置默认值
  • @Value注解默认值使用及效果测试
    • 使用@Value注解的代码
  • 总结

    @Value注解设置默认值

    在Spring Boot中,如果使用@Value注解对属性进行赋值,但如果在配置文件或启动参数中未指定对应的参数值,则会抛出异常。异常信息往往是对应注入属性的类实例化失败。

    此时,需要对@Value对应的值进行配置,或设置默认值。

    设置方法如下:

    @RestController
    public class ConfigController {
     // ①未指定默认值
     @Value("${user.username}")
     private String username;
     
     // ②指定默认值为“unknown”
     @Value("${prpythonojectName:unknown}")
     private String projectName;
    }

    针对以上两个@Value的使用,如果username对应的属性值未在application.properties文件中配置或未在Java -jar命令www.devze.com中传递参数,那么启动时将抛出异常。

    而针对第二种方式,通过“:”指定如果获取不到该参数值时所使用的默认值,则启动时不会出现异常信息。

    @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;
        }
    
        @Oandroidverride
        public String toString() {
            return "User{" +
                    "address='" + address + '\'' +
                    '}';
        }
    }
    

    Junit测试

    UserTest.java

    package com.oashiro.example.test;
    
    import org.junit.juwww.devze.compiter.api.BeforeEach;
    import org.junit.jupiter.api.Test;
    import org.springframewophprk.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");
       开发者_Go学习 }
    
        @Test
        public void printUser(){
            System.out.println(user);
            //预期结果(浙江省)与实际获取的默认结果(浙江省杭州市西湖区)作对比
            assertEquals("浙江省",user.getAddress());
        }
    }
    

    测试结果

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

    总结

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

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜