package com.iailab.module.shasteel.framework.sms.core.client.impl; import com.iailab.module.shasteel.framework.sms.core.client.SmsClient; import com.iailab.module.shasteel.framework.sms.core.property.SmsChannelProperties; import lombok.extern.slf4j.Slf4j; /** * 短信客户端的抽象类,提供模板方法,减少子类的冗余代码 * * @author zzf * @since 2021/2/1 9:28 */ @Slf4j public abstract class AbstractSmsClient implements SmsClient { /** * 短信渠道配置 */ protected volatile SmsChannelProperties properties; public AbstractSmsClient(SmsChannelProperties properties) { this.properties = properties; } /** * 初始化 */ public final void init() { doInit(); log.debug("[init][配置({}) 初始化完成]", properties); } /** * 自定义初始化 */ protected abstract void doInit(); public final void refresh(SmsChannelProperties properties) { // 判断是否更新 if (properties.equals(this.properties)) { return; } log.info("[refresh][配置({})发生变化,重新初始化]", properties); this.properties = properties; // 初始化 this.init(); } @Override public Long getId() { return properties.getId(); } }