Java - 工具类参数初始化

在做第三方接口调用时,经常需要根据不同的环境指定初始化的参数。以下做一个简单的记录。

一、使用static初始化

使用static初始化,仅会初始化一次,但无法从配置文件中获取参数。并且如果写了多个初始化工具类,会互相覆盖。


/**
 * 对接工具类
 */

@Component
@Slf4j
public class ApiUtils {

    private static ApiUtils apiUtils;

    // 生产环境配置
    private static String ak = "123456";
    private static String sk = "654321";

    @Autowired
    private RedisCache redisCache;
	// 需要参数初始化的实例
    private static ApiClient apiClient;

    @PostConstruct
    public 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 ;

    @Autowired
    private Environment environment;

    // 根据配置环境初始化的配置
    private static String ak;
    private static String sk;

    @Autowired
    private RedisCache redisCache;

	// 需要参数初始化的实例
    private static ApiClient apiClient;

    @PostConstruct
    public 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 Key
        apiClient.setAccessKey(ak);
        //应用App Secret
        apiClient.setSecretKey(sk);
        apiClient.init();
        System.out.println("ApiClient 初始化结束>>>>>>>>>>>>>>>>");
    }
}

yml配置文件设置

set:
  ak: 123456
  sk: 654321

你可能感兴趣的:(工作日常,java,开发语言)