济南网站建设内容seo学习网站
在做第三方接口调用时,经常需要根据不同的环境指定初始化的参数。以下做一个简单的记录。
一、使用static初始化
使用static初始化,仅会初始化一次,但无法从配置文件中获取参数。并且如果写了多个初始化工具类,会互相覆盖。
/*** 对接工具类*/@Component
@Slf4j
public class ApiUtils {private static ApiUtils apiUtils;// 生产环境配置private static String ak = "123456";private static String sk = "654321";@Autowiredprivate RedisCache redisCache;// 需要参数初始化的实例private static ApiClient apiClient;@PostConstructpublic void init() {System.out.println("ApiUtils初始化>>>>>>>>>>>>>>>>");apiUtils = this;apiUtils.redisCache = this.redisCache;}// 静态初始化,仅初始化一次static {apiClient = ApiClient.getInstance();apiClient.setAccessKey(ak);apiClient.setSecretKey(sk);apiClient.init();System.out.println("ApiClient初始化>>>>>>>>>>>>>>>>");}
}
二、根据配置文件获取参数初始化
@Component
@Slf4j
public class ApiUtils {private static ApiUtils apiUtils ;@Autowiredprivate Environment environment;// 根据配置环境初始化的配置private static String ak;private static String sk;@Autowiredprivate RedisCache redisCache;// 需要参数初始化的实例private static ApiClient apiClient;@PostConstructpublic void init() {System.out.println("ApiUtils 初始化开始>>>>>>>>>>>>>>>>");apiUtils = this;apiUtils .redisCache = this.redisCache;apiClient= ApiClient .getInstance();// 通过读取配置文件中指定的参数ak= environment.getProperty("set.ak");sk= environment.getProperty("set.sk");//应用App KeyapiClient.setAccessKey(ak);//应用App SecretapiClient.setSecretKey(sk);apiClient.init();System.out.println("ApiClient 初始化结束>>>>>>>>>>>>>>>>");}
}
yml配置文件设置
set:ak: 123456sk: 654321