有时候一些常量不想批改业务代码,能够灵便的放在.yml或者properties文件中.
比拟罕用的办法有:
首先键一个类提供get/setter办法
@Data@ConfigurationProperties(prefix = "ums.params")//两个注解必须加,用来提供给spring容器扫描到@Componentpublic 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容器扫描到@Componentpublic 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、通过配置类赋值
@Configurationpublic class WebConfiguration extends WebAutoConfiguration { @Bean @ConfigurationProperties(prefix = "ums.params") public UmsConstant umsConstant() { return new UmsConstant(); }
4、通过getbean形式
signProperties = SpringContextHolder.getBean(SignProperties.class);
5、通过proroti对象形式...
这种形式须要指定文件,不是很不便。