背景:
对应不同业务要加审批流.在执行审批之后对应不同业务要做不同的后置处理,为了方便后置处理动作的编写,赋予了业务代码注册功能
伪代码如下:
--mp-common包下定义功能接口
public interface ApproActionInterface{
// 注册方法
void register();
// 业务方法1
void fun1();
void fun2();
void fun3();
}
/**
使用map实现注册功能
*/
@Component
public class ApproveBeanComponent {
public static Map<String, String> approveActionBeanMap = new HashMap<>();
public static void put(String key, String beanName) {
approveActionBeanMap.put(key, beanName);
}
public static String get(String key) {
return approveActionBeanMap.get(key);
}
}
-- mp-trust 业务代码包下 实现要注册的功能
TrustApproveAction implements ApproActionInterface {
// spring初始化bean时,将类注册
@PostConstruct
public void registerBean() {
ApproveBeanComponent.put("UnionConfigApiController", "unionConfigApiController");
}
// 复写业务方法
void fun1(){........}
}
-- mp-appro 审批流包下 使用注册方法
String beanName = ApproveBeanComponent.get(key);
ApproActionInterface bean = SpringContextHolder.getBean(beanName);
bean.fun1();