美文网首页
Spring-读取配置

Spring-读取配置

作者: 醉舞经阁半卷书 | 来源:发表于2022-04-03 19:40 被阅读0次

    [toc]

    Spring-读取配置

    概述

    在Spring中,动态配置可以在配置中心或者profile文件中放置,而读取配置的方式有很多种,我常用的有以下两种:

    • 通过@Value("${property-name}")注解的方式读取配置,这种方式的好处是简单直接,需要读取哪个配置,直接在需要的类里面添加一个成员变量加上这个注解就可以了,缺点就是对每个需要使用这个配置的类都要加一个成员变量。当然@Value注解还支持通过EL表达式进行一些稍微点的操作,功能还是比较强大的。
    • 通过@ConfigurationProperties注解使用配置类的方式读取,这种方式将配置转换成实体类,其它类要使用它,采用自动注入的方式直接使用即可。

    通过@Value注解读取配置

    在配置文件或配置中心的配置
    user:
      name: k
    
    读取和适用配置
    // 读取配置
    @Value("${user.name}")
    private String userName;
    
    public void func() {
        // 使用
        System.out.println(userName);
    }
    

    通过@ConfigurationProperties配置类读取配置

    在配置文件或配置中心的配置
    prop:
      user: "k"
      password: "***"
      owns:
        - name: "apple"
          size: 20
        - name: "orange"
          size: 10
    
    配置类
    import java.util.List;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    import lombok.Data;
    
    /**
     * 用户配置类:从配置文件中读取配置方便使用
     */
    @Data
    @Component
    @ConfigurationProperties(prefix = "prop")
    public class SpringConfig {
        private String user;
    
        private String password;
    
        private List<Owns> owns;
    
        @Data
        private static class Owns {
            private String name;
    
            private Integer size;
        }
    }
    
    
    使用配置类:简单的示例,获取配置类的bean,然后读取配置。也可以通过自动注入的方式读取配置。
    /**
         * 根据类名读取配置
         * 例如:"com.kaesar.getup.config.SpringConfig"
         * 
         * @param propertyClassName
         * @return
         * @throws ClassNotFoundException
         */
        @ApiOperation(value = "读取配置", tags = {"根据配置名读取配置"})
        @GetMapping("readProperties/{propertyClassName}")
        public String readProperties(@ApiParam(name = "propertyClassName", value = "配置key", required = true) @PathVariable String propertyClassName) throws ClassNotFoundException {
            Map<String, ?> propertyClass = applicationContext.getBeansOfType(Class.forName(propertyClassName));
    
            return propertyClass.toString();
        }
    

    总结

    当前,Spring还有一些别的方式读取配置,比如读取系统参数、通过配置文件读取等,具体使用哪种方式就看觉得哪个更方便了。

    1.01^{365} ≈ 37.7834343329
    0.99^{365} ≈ 0.02551796445
    相信坚持的力量!

    相关文章

      网友评论

          本文标题:Spring-读取配置

          本文链接:https://www.haomeiwen.com/subject/bxzfsrtx.html