目前正在学习Java,想把一些学习过程中的点点滴滴记录下来,一个原因是方便自己以后使用,另一个原因是巩固一下自己的学习成果和大家分享!!
下面我把我做过的一个配置文件信息映射至Controller层的案例分享给大家
第一种方式:
1、在创建springboot项目工程后,在项目的resource文件夹下创建pay.properties测试文件夹
2、在pay.properties加入以下代码(这是我自己随便写的,你们也可以改成别的参数和值)
#微信支付的唯一ID
wxpay.payid=1001
wxpay.sercret=1213213
#微信支付商户秘钥
wxpay.mechid=32423
3、创建测试类的Controller
//使用@PropertySource注解,获取到pay.properties定义好的配置文件信息
//使用@Value注解为字段赋值
@RestController
@RequestMapping("api/v1/test")
@PropertySource({"classpath:pay.properties"})//使用@PropertySource注解,获取到定义好的配置文件信息
public class testController {
@Value("${wxpay.payid}")//使用Value注解为字段赋值
private String payid;
@Value("${wxpay.sercret}")
private String sercret;
@Value("${wxpay.mechid}")
private String mechid;
//测试获取配置文件信息
@GetMapping("get_wxPay")
public JsonData wxPay() {
Map<String, String> payMap = new HashMap<>();
payMap.put("payid", payid);
payMap.put("mechid", mechid);
payMap.put("sercret", sercret);
return JsonData.buildSuccess(payMap);
}
}
4、测试
成功获取到pay.properties中的信息(注意:访问时一定不要把自己的地址写错哦!!)
第二种方式:
1、在config文件夹下创建实体类wxPayConfig(没有config的话新建一个也可以)
2、在wxPayConfig中映射配置文件信息(注意:一定要加@Configuration和@PropertySource这两个注解,并写对文件名称value="classpath:pay.properties")
@Configuration
@PropertySource(value="classpath:pay.properties")//获取到定义好的配置文件信息
public class wxPayConfig {
@Value("${wxpay.payid}")//映射字段信息
private String payid;
@Value("${wxpay.sercret}")
private String sercret;
@Value("${wxpay.mechid}")
private String mechid;
//set AND get
3、创建测试类的Controller
在测试类中引入第二步创建的wxPayConfig配置类,使用配置类来get调用里面的信息
@RestController
@RequestMapping("api/v1/test")
@PropertySource({"classpath:pay.properties"})
public class testController {
@Autowired
private wxPayConfig wxPayConfig;//引入wxPayConfig实体类
//测试获取配置文件信息
@GetMapping("get_wxPay")
public JsonData wxPay() {
Map<String, String> payMap = new HashMap<>();
//通过wxPayConfig实体类来获取到pay.properties中定义的信息
payMap.put("payid", wxPayConfig.getPayid());
payMap.put("mechid", wxPayConfig.getMechid());
payMap.put("sercret", wxPayConfig.getSercret());
return JsonData.buildSuccess(payMap);
}
}
4、再次测试显示信息就和上面的一样啦
5、推荐大家使用第二种方法
常见问题:
1
、配置⽂件注⼊失败,
Could not resolve placeholder
解决:根据
springboot
启动流程,会有⾃动扫描包没有扫描到相关注解
,
默认
Spring
框架实现会从声明
@ComponentScan
所在的类的
package
进⾏扫描,来⾃动注⼊,
因此启动类最好放在根路径下⾯,或者指定扫描包范围
spring-boot
扫描启动类对应的⽬录和⼦⽬录
2
、注⼊
bean
的⽅式,属性名称和配置⽂件⾥⾯的
key
⼀⼀对应,就⽤加
@Value
这个注解
如果不⼀样,就要加
@value("${XXX}")