有时候一些常量不想批改业务代码,能够灵便的放在.yml 或者 properties 文件中.
比拟罕用的办法有:
首先键一个类提供 get/setter 办法
@Data
@ConfigurationProperties(prefix = "ums.params")// 两个注解必须加,用来提供给 spring 容器扫描到
@Component
public class UmsConstant {
/**
* 平台下单接口
*/
private String chinaUmsServerApi;
/**
* 领取或退款胜利回调
*/
private String notyApi;
/**
* 平台商户号
*/
private String mid;
/**
* 平台终端号
*/
private String tid;
/**
* 消息来源
*/
private String msgSrc;
/**
* 起源编号
*/
private String msgSrcId;
/**
* 签名类型
*/
private String signType;
/**
* app 模式
*/
private String appDefault;
/**
* c 扫 b 模式
*/
private String qrDefault;
/**
* SHA256 密钥
*/
private String priKey;
}
对应 yml 配置文件:
# 参数配置
ums:
params:
#平台下单接口
chinaUmsServerApi: "http://route-server/api/"
#领取或退款胜利回调
notyApi: "http://payCallback/"
#平台商户号
mid: "8*****39AAAW"
#平台终端号
tid: "A4*****LB"
#消息来源
msgSrc: "WWW.****.COM"
#起源编号
msgSrcId: "***B"
#签名类型
signType: "***256"
#app 模式
appDefault: "APP****AULT"
#c 扫 b 模式
qrDefault: "QRPA***FAULT"
#SHA256 密钥
priKey: "6MB74yfz6y3rnt********wJrr3rS"
1、 静态方法形式赋值给静态方法,长处是全局惟一,通过类名. 办法获取。
@Component// 注解必须加
public class UmsParamsUtil {private static Logger log = LoggerFactory.getLogger(UmsParamsUtil.class);
@Autowired
public UmsConstant umsConstant;// 注入对象属性
// 定义动态参数
public static UmsParamsUtil umsParamsTempleUtil;
/**
* 初始化,动态代码块类加载是加载,赋值给动态参数
*/
@PostConstruct
public void init(){
// 对象属性曾经有值
umsParamsTempleUtil = this;
// 赋值给以后动态参数
umsParamsTempleUtil.umsConstant = this.umsConstant;
}
/**
* 参数静态方法获取值
* @return
*/
public static UmsConstant umsConstant(){if(umsParamsTempleUtil.umsConstant == null){log.error("***** 为空");
}
// 给对象赋值
return umsParamsTempleUtil.umsConstant;
}
}
应用形式:UmsParamsUtil.umsConstant.getSignType…
2、 通过静态方法类加载时间接赋值
@Data
@ConfigurationProperties(prefix = "ums.params")// 两个注解必须加,用来提供给 spring 容器扫描到
@Component
public class UmsConstant {
/**
* 平台下单接口
*/
private String chinaUmsServerApi;
/**
* 领取或退款胜利回调
*/
private String notyApi;
// 初始化
@PostConstruct
public void init(){UmsStatic.setParams(this);
}
}
public class UmsStatic(){
public static String API_N;
public static String API_NN;
public static setParams(UmsConstant umsconstant){
UmsStatic.API_N = umsconstant.getXXX;
UmsStatic.API_NN = umscontant.getXXXX;
}
}
3、 通过配置类赋值
@Configuration
public class WebConfiguration extends WebAutoConfiguration {
@Bean
@ConfigurationProperties(prefix = "ums.params")
public UmsConstant umsConstant() {return new UmsConstant();
}
4、 通过 getbean 形式
signProperties = SpringContextHolder.getBean(SignProperties.class);
5、 通过 proroti 对象形式 …
这种形式须要指定文件,不是很不便。