zoukankan      html  css  js  c++  java
  • SpringBoot自定义配置--跟着慕课熊猫学

    SpringBoot自定义配置

    全文参考http://www.imooc.com/wiki/springbootlesson/conf.html

    Spring Boot 支持两种格式的配置文件,即 .properties 文件和 .yml 配置文件。

    .properties 配置使用顿号分割语义,而 .yml 配置使用缩进分割语义。这两种配置文件没有本质区别,只是格式不同。

    1.自动配置

    假设我们开发了一个微信公众号后台应用,需要在程序中配置公众号的 appid 和 secret 。

    配置文件:

    # 公众号appid
    wxmp.appid=111
    # 公众号secret
    wxmp.secret=222
    

    我们定义一个组件,通过 @Value 注解注入配置项的值。

    实例:

    /**
     * 微信公众号参数
     */
    @Component//注册为组件
    public class WxMpParam {
    	@Value("${wxmp.appid}")//注入wxmp.appid配置项
    	private String appid;
    	@Value("${wxmp.secret}")//注入wxmp.secret配置项
    	private String secret;
      //省略get set方法
    }
    

    通过控制器测试配置项是否注入成功。

    实例:

    @RestController 
    public class HelloController {
    	@Autowired
    	private WxMpParam wxMpParam;
    	@GetMapping("/hello") 
    	public Map hello() {
    		Map<String, String> map = new HashMap<String, String>();
    		map.put("appid",wxMpParam.getAppid());
    		map.put("secret",wxMpParam.getSecret());
    		return map;
    	}
    }
                                                        
    

    此时我们访问 http://127.0.0.1:8000/spring-boot-profile/hello ,浏览器显示如下,说明我们的配置注入成功。

    image-20201021104122523

    2.配置项自动注入对象

    如果参数很多,一一指定对象属性和配置项的关联非常麻烦。可以通过设定对象与配置项的对应关系,来实现配置项的自动注入。

    实例:

    @Component // 注册为组件
    @EnableConfigurationProperties // 启用配置自动注入功能
    @ConfigurationProperties(prefix = "wxmp") // 指定类对应的配置项前缀
    public class WxMpParam {
    	private String appid;// 对应到wxmp.appid
    	private String secret; // 对应到wxmp.secret
      //省略 get set
    }                                                   
    

    在上面的代码中,通过 prefix = "wxmp" 指定了关联配置的前缀,属性 appid 即关联到前缀 + 属性名为 wxmp.appid 的配置项。同理,属性 secret 关联到 wxmp.secret 配置项。

    3.在配置文件中使用随机数

    实例:

    # 配置端口为1-20间的随机数
    server.port=${random.int[10,20]}
    

    4.自定义配置文件

    有时候参数太多,都放到一个配置文件中太乱了,我们会希望将配置分到不同文件中,然后每个文件保存不同配置。

    例如上面微信公众号配置,我们单独建立一个 wxmp.properties 文件,内容如下:

    实例:

    # wxmp.properties配置文件
    
    # 公众号的appid
    wxmp.appid=111
    # 公众号的secret
    wxmp.secret=222
    

    WxMpParam 代码如下:

    实例:

    /**
    * 微信公众号参数
    */
    @Component // 注册为组件
    @PropertySource(value = "classpath:wxmp.properties", encoding = "utf-8") // 指定配置文件及编码
    public class WxMpParam {
       @Value("${wxmp.appid}")
       private String appid;
       @Value("${wxmp.secret}")
       private String secret;
    }
    

    5.配置项引用

    Spring Boot 配置项是可以引用其他配置项值

    实例:

    # wxmp.properties
    
    # 公众号的appid
    wxmp.appid=111
    # 公众号的secret,值为111222
    wxmp.secret=${wxmp.appid}222 
    

    6.小结

    对一个 Spring Boot 应用而言。

    • 如果配置项比较少,直接全部写在 application.properties
    • 如果配置项很多,可以划分为若干配置文件。
    • 如果很多自定义配置拥有相同的前缀,可以指定前缀,让配置项自动注入对象中。
    • Spring Boot 提供了多变的配置文件使用机制,我们根据具体场景灵活使用即可。
    由于无法解释的神圣旨意,我们徒然地到处找你;你就是孤独,你就是神秘,比恒河或者日落还要遥远。。。。。。
  • 相关阅读:
    MySQL8.0新增配置参数
    CF1153F Serval and Bonus Problem
    win10 uwp xaml 绑定接口
    win10 uwp xaml 绑定接口
    Windows Community Toolkit 3.0 新功能 在WinForms 和 WPF 使用 UWP 控件
    Windows Community Toolkit 3.0 新功能 在WinForms 和 WPF 使用 UWP 控件
    win10 uwp 渲染原理 DirectComposition 渲染
    dotnet 从入门到放弃的 500 篇文章合集
    C# ValueTuple 原理
    WPF 使用 Direct2D1 画图入门
  • 原文地址:https://www.cnblogs.com/momoli/p/13851074.html
Copyright © 2011-2022 走看看