自己写的配置文件
@Data
@Configuration
@Component
public class MyWxPayConfig extends WXPayConfig {
@Value("${wxpay.appid}")
private String appid;
@Value("${wxpay.mchid}")
private String mchid;
@Value("${wxpay.key}")
private String key;
private byte[] certData;
public MyWxPayConfig() throws Exception {
}
public String getAppID() {
return appid; //你的appid
}
public String getMchID() {
return mchid;//你的商户号mch_id
}
public String getKey() {
return key;//你的商户号秘钥 key
}
public InputStream getCertStream() {
ByteArrayInputStream certBis = new ByteArrayInputStream(this.certData);
return certBis;
}
public int getHttpConnectTimeoutMs() {
return 8000;
}
public int getHttpReadTimeoutMs() {
return 10000;
}
public IWXPayDomain getWXPayDomain() {
// 这个方法需要这样实现, 否则无法正常初始化WXPay
IWXPayDomain iwxPayDomain = new IWXPayDomain() {
public void report(String domain, long elapsedTimeMillis, Exception ex) {
}
public DomainInfo getDomain(WXPayConfig config) {
return new IWXPayDomain.DomainInfo(WXPayConstants.DOMAIN_API, true);//微信工具常量类有 "api.mch.weixin.qq.com"; wxpay.unifiedorder() /pay/unifiedorder40
}
};
return iwxPayDomain;
}
}
看上去没有什么问题但实际跑代码的时候配置文件属性总是null获取不到,最终找到解决方案,https://bbs.csdn.net/topics/390936459?page=4(#32说明)
我也遇到了这个问题,后来解决了,原因是如果有注入bean的那个类,在被其他类作为对象引用的话(被调用)。 这个被调用的类也必须选择注解的方式,注入到调用他的那个类中,不能用 new出来做对象,new出来的对象再注入其他bean就会 发生获取不到的现象。所以要被调用的javabean,都需要@service,交给Spring去管理才可以,这样他就默认注入了。
比如我自己的这个MyWxPayConfig
这个类,在其他位置使用的话必须是
@Autowired
private MyWxPayConfig myWxPayConfig;
而不能再new创建对象。