分析
通道的信息只有外部知道,starter是不知道,所以要定义一个接口,获取通道信息,让外部来实现
代码如下
public interface PassInfoService {
/**
* 获取通道信息
* @param passNo
* @return
*/
PassInfo getInfo(String passNo);
}
@Data
public class PassInfo {
private String appId;
private String appKey;
private PassType passType;// 通道类型,具体是哪个通道的信息用这个字段来标识
}
FaceRecognitionService 代码更新如下
@Component
public class FaceRecognitionService {
@Autowired
private PassInfoService passInfoService;
/**
* 创建订单
* @param orderNo
* @param passNo
* @param name
* @param idNo
* @param callbackUrl
* @return
*/
public CreateOrderBo createOrder(String orderNo, String passNo, String name, String idNo, String callbackUrl) {
PassInfo passInfo = passInfoService.getInfo(passNo);
String appId = passInfo.getAppId();
String appKey = passInfo.getAppKey();
PassType passType = passInfo.getPassType();
return null;
}
/**
* 查询订单
* @param orderNo
* @param passNo
* @return
*/
public QueryOrderBo queryOrder(String orderNo, String passNo) {
PassInfo passInfo = passInfoService.getInfo(passNo);
String appId = passInfo.getAppId();
String appKey = passInfo.getAppKey();
PassType passType = passInfo.getPassType();
return null;
}
}
此处用到接口的一个特性,控制反转,就是starter知道自己需要什么信息,但是提供不出来,所以就定义接口,从接口里获取信息,然后让外部来实现并且提供这些信息