公众号merlinsea
将属性的value值以配置文件的形式存在,优点在于可以避免代码中过多的硬编码,方便在实际生产中将配置文件迁移到配置中心nacos上,后续只需要修改配置文件pay.properties就可以修改代码中的内容。
1、编写配置文件pay.properties
核心:以key-value的形式把代码中的硬编码的内容抽取出来
wxpay.appid = 2398439284 wxpay.name = liangin wxpay.pwd = 123abcd
2、编写配置类,注入配置文件中的属性,并交给spring进行扫描
核心:
1、确定配置文件的路径,一般都是在classpath类路径下
2、交给spring进行扫描
/** * @Configuration 标识这个类是一个配置类,Spring会自动扫描这个类,并实例化到IOC容器中 * @PropertySource({"classpath:pay.properties"}) 指明这个类会用到的配置文件在哪儿 * @Value("${wxpay.appid}") 从配置文件中取值并赋值给属性 */ @Configuration @PropertySource({"classpath:pay.properties"}) public class PayConfiguration { @Value("${wxpay.appid}") private String appId; @Value("${wxpay.name}") private String name; @Value("${wxpay.pwd}") private String pwd; public String getAppId() { return appId; } public void setAppId(String appId) { this.appId = appId; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } }
3、controller层的调用
核心:注入配置类,取值
public class UserController { @Autowired private PayConfiguration payConfiguration; @GetMapping("config") public Object testConfig(){ Map<String,String> map = new HashMap<>(); map.put("appid",payConfiguration.getAppId()); map.put("appname",payConfiguration.getName()); map.put("apppwd",payConfiguration.getPwd()); return map; } }