• SpringBoot中通过ConfigurationProperties注解的方式读取application.yml中配置的属性值


    场景

    在SpringBoot后台项目中,某些固定的属性需要配置在配置文件application.yml中。

    比如上传到服务器的文件路径。

    然后在其他业务代码中比如上传文件接口中需要或者到配置的这个属性值。

    注:

    博客:
    https://blog.csdn.net/badao_liumang_qizhi
    关注公众号
    霸道的程序猿
    获取编程相关电子书、教程推送与免费下载。

    实现

    首先在application.yml中添加配置

    ruoyi:
      # 名称
      name: RuoYi
      # 版本
      version: 2.3.0
      # 版权年份
      copyrightYear: 2019
      # 实例演示开关
      demoEnabled: true
      # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
      profile: D:/ruoyi/uploadPath

    比如这里的ruoyi下的profile的属性值

    D:/ruoyi/uploadPath

    怎样在代码中获取。

    首先在SpringBoot项目目录下新建config目录,然后新建配置类RuoYiConfig,名字随意

    然后在配置类上添加注解

    @Component 
    @ConfigurationProperties(prefix = "ruoyi") 
    public class RuoYiConfig

    注意这里的prefix属性值与上面配置文件的根元素一致

    然后配置类中的属性与配置文件根节点下的名称一致 ,配置类完整代码

    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    /**
     * 读取项目相关配置
     *
     */
    @Component
    @ConfigurationProperties(prefix = "ruoyi")
    public class RuoYiConfig 
    { 
        /** 项目名称 */ 
        private String name;
    
        /** 版本 */
        private String version;
    
        /** 版权年份 */
        private String copyrightYear;
    
        /** 实例演示开关 */
        private boolean demoEnabled;
    
        /** 上传路径 */
        private static String profile;
    
    
        public String getName()
        {
            return name;
        }
    
        public void setName(String name)
        {
            this.name = name;
        }
    
        public String getVersion()
        {
            return version;
        }
    
        public void setVersion(String version)
        {
            this.version = version;
        }
    
        public String getCopyrightYear()
        {
            return copyrightYear;
        }
    
        public void setCopyrightYear(String copyrightYear)
        {
            this.copyrightYear = copyrightYear;
        }
    
        public boolean isDemoEnabled()
        {
            return demoEnabled;
        }
    
        public void setDemoEnabled(boolean demoEnabled)
        {
            this.demoEnabled = demoEnabled;
        }
    
        public static String getProfile()
        {
            return profile;
        }
    
        public void setProfile(String profile)
        {
            RuoYiConfig.profile = profile;
        }
    
        /**
         * 获取上传路径
         */
        public static String getUploadPath()
        {
            return getProfile();
        }
    }

    这里的配置类的

    private static String profile;

    就能获取到application.yml中配置的profile的属性值了。

    为了或此属性值更加便捷,又新增了一个静态方法

        public static String getUploadPath()
        {
            return getProfile();
        }

    这样就能通过类直接调用方法。

    然后还拼接了一层目录。这样通过

    RuoYiConfig.getUploadPath();

    获取的路径就是

    D:/ruoyi/uploadPath

    除了额外封装一层静态类的方式。也可以在需要引用的地方使用注解自动引用配置类

        @Autowired
        private RuoYiConfig ruoYiConfig

    然后获取其属性

    ruoYiConfig.getProfile();
    博客园: https://www.cnblogs.com/badaoliumangqizhi/ 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。
  • 相关阅读:
    Use "Attach to Process" in VC Express 2010
    韩国三日游
    可耻的没通过Autodesk 3ds Max初级认证
    Trace depth and rays per second per core
    References on SSS
    Free Shave SDK
    New wisdom on offline/interactive rendering
    匹配汉字的正则表达式
    WPF中richtextbox的一些用法
    C#中禁止一个程序打开多次
  • 原文地址:https://www.cnblogs.com/badaoliumangqizhi/p/13608070.html
Copyright © 2020-2023  润新知