SpringBoot使用配置类映射yml配置文件信息
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot使用配置类映射yml配置文件信息相关的知识,希望对你有一定的参考价值。
参考技术A 使用configurationProperties注解并指明在配置文件中的前缀,然后用component注解注册进ioc容器。我这里定义的两个静态内部类,同时创建了各自的实例,比如这个Email静态内部类中有三个属性,那么配置文件就可以是mq.myrabbit.email.queue来对静态内部类中的属性进行一个映射
在yml中写配置
项目编译后,在yml中写配置会自动显示出来自己定义的配置映射类所具有的属性,如下图所示:
然后在yml配置文件中,写各个配置,配置类就会读取到了
SpringBoot注解配置文件映射属性和实体类
配置文件加载
方式一
- Controller上面配置@PropertySource({"classpath:pay.properties"})
- 添加属性@Value("wxpay.appid") private String payAppid;
pay.properties
# 微信支付的appid
wxpay.appid=w23232323
# 支付密钥
wxpay.sercret=abd
# 微信支付商户号
wx.mechid=1234
TestController.java
package net.cyb.demo.controller; import net.cyb.demo.utils.JsonData; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.PropertySource; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.Map; @RestController @RequestMapping("/api/v1/test") @PropertySource({"classpath:pay.properties"}) public class TestController { @Value("wxpay.appid") private String payAppid; @Value("wxpay.sercret") private String paySecret; @GetMapping("get_config") public JsonData testConfig(){ Map<String,String> map=new HashMap<>(); map.put("appid",payAppid); map.put("secret",paySecret); return JsonData.buildSuccess(map); } }
方式二
- 添加@Component注解
- 使用PropertySource注解指定配置文件位置
- 使用@ConfigurationProperties注解,设置相关属性
- 必须通过注入IOC对象Resource进来,才能在类中使用获取的配置文件值。@Autowired private WXConfig wxConfig;
pay.properties
# 微信支付的appid
wxpay.appid=w23232323
# 支付密钥
wxpay.sercret=abd
# 微信支付商户号
wx.mechid=1234
WXConfig.java
package net.cyb.demo.config; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import java.io.Serializable; @Configuration @PropertySource({"classpath:pay.properties"}) public class WXConfig implements Serializable { @Value("wxpay.appid") private String payAppid; @Value("wxpay.sercret") private String paySecret; @Value("wx.mechid") private String payMechId; public String getPayAppid() { return payAppid; } public void setPayAppid(String payAppid) { this.payAppid = payAppid; } public String getPaySecret() { return paySecret; } public void setPaySecret(String paySecret) { this.paySecret = paySecret; } public String getPayMechId() { return payMechId; } public void setPayMechId(String payMechId) { this.payMechId = payMechId; } }
TestController.java
package net.cyb.demo.controller; import net.cyb.demo.config.WXConfig; import net.cyb.demo.utils.JsonData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.PropertySource; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.Map; @RestController @RequestMapping("/api/v1/test") public class TestController { @Autowired private WXConfig wxConfig; @GetMapping("get_config") public JsonData testConfig(){ Map<String,String> map=new HashMap<>(); map.put("appid",wxConfig.getPayAppid()); map.put("secret",wxConfig.getPaySecret()); map.put("mechid",wxConfig.getPayMechId()); return JsonData.buildSuccess(map); } }
以上是关于SpringBoot使用配置类映射yml配置文件信息的主要内容,如果未能解决你的问题,请参考以下文章