当前位置 主页 > 网站技术 > 代码类 >

    Springboot中@Value的使用详解

    栏目:代码类 时间:2019-12-20 18:05

    Springboot通过@Value注解将配置文件中的属性注入到容器内组件中(可用在@Controller、@Service、@Configuration、@Component等Spring托管的类中) 

    1.普通字符串注入

    例:yml中存在key:

    name: zs

    @Value注入

    @Value("${name}")
    public String name;

    当yml中的name没有对应值时,即yml中为:

    name:

    此时字符串name的值为""

    可设置注入属性的默认值(当配置文件中没有此key时,此默认值生效),语法:

    @Value("${name:zch}")
    
    public String name;// 此时,若配置文件中没有name这个key,变量name的值为zch
    
    

    2.常用的int、boolean类型

    例:

    yml中存在key:

    port: 8888

    flag: true

    @Value注入

    @Value("${port}")
    
    public int port;
    
    @Value("${flag}")
    
    public boolean flag;
    
    

    3.数组类型

    例:

    yml中存在key:

    id: 1,2,3

    @Value注入

    @Value("${id}")
    
    public int[] idArray;
    
    

    当yml中id没有对应值时,数组idArray为非null空数组,长度为0

    4.list类型

    例:

    yml中存在key:

    id: 1,2,3

    @Value注入

    @Value("#{'${id}'.split(',')}")
    
    public List<String> idList;
    
    

    当yml中id没有对应值时,集合idList长度为1,存在值""  (原本以为是空集合,造成bug,特记录)

    5.map类型

    例:

    yml中存在key:

    user: "{name: 'zs',age: '23'}" #注意此值用双引号包裹

    @Value注入

    @Value("#{${user}}")
    
    public Map<String,String> userInfo;
    
    

    当yml中user没有对应值是,启动报错

    #{}表示使用SpEL表达式,(此处是来自未来的文章超链接,正在路上)

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持IIS7站长之家。