前言
在进行支付宝回调业务开发时,使用到了抽象类。把回调之后的业务处理如增加余额等公共的逻辑写在父类中。至于业务处理之前的验签工作依据子类对象配置的不同交由子类自己实现。
public abstract class AliPayCallBackService{
public abstract boolean rsaCheck();
public String foodAliPayChargeCallBack() {
rsaCheck();
processData();
}
public void processData(){
//处理业务逻辑
}
}
处理方式:
只需要将Bean注入到抽象类中,并且访问修饰符不能是private,这样子类即可以使用到。Demo如下
public abstract class AliPayCallBackService{
@Autowired
protected AliPayRsaCheckService rsaCheckService;
public abstract boolean rsaCheck();
public String foodAliPayChargeCallBack() {
rsaCheck();
processData();
}
//数据业务逻辑
public void processData(){
//处理业务逻辑
}
}
//子类1
@Service
public class AliPayNormalService extends AliPayCallBackService {
@Override
public boolean rsaCheck() {
//假设rsaCheckService 服务里定义了对普通商户和特约商户的验签方法,这里调用普通验签方法
rsaCheckService.customRsaCheck();
}
}
//子类2
@Service
public class AliPaySpecialService extends AliPayCallBackService {
@Override
public boolean rsaCheck() {
//假设rsaCheckService 服务里定义了对普通商户和特约商户的验签方法,这里调用特约商户验签方法
rsaCheckService.specialRsaCheck();
}
}