前提场景
我们多个系统同时继承了某一个通用系统,通用系统的接口是不会允许随意改变的,其他子系统都依赖于Base系统的通用接口
目标需求场景
但是有一个业务,需要给某一个公共接口增加子系统独有的业务功能;比如某个接口完成之后会往其他的业务修改状态
通常使用做法-01 集成BaseController的接口,从写这个业务代码,然后覆盖掉原有通用接口的业务
通常使用做法-02 spring的最重要的核心特性之一---AOP切面增强
推荐使用AOP技术增强。
/**
* 动态增强BaseController的接口代码
*/
@Aspect
@Component
public class NioTaskInfoControllerAdvice {
Logger logger = LoggerFactory.getLogger(NioTaskInfoControllerAdvice.class.getSimpleName());
private String msgStartSuffix = "申请号:";
@Autowired
private FeeInfoService feeInfoService;
//标识切入点的特征
@Pointcut(value = "execution(* com.XX.XX.XX.interfaces.XXXController.finish(..))")
public void pointCut() {
}
/**
* XX完成拓展--BB需要自动生成费用确认台账
* 返回通知(@AfterReturning):当被增强的方法 成功执行之后调用通知
*/
@AfterReturning(value = "pointCut()", returning = "result")
public void afterReturning(JoinPoint joinPoint, Object result) {
logger.info("XX完成接口增强---成功执行之后调用返回通知通知织入增强业务逻辑");
try {
if (result instanceof Result) {
if (((Result<?>) result).isSuccess()) {
logger.info("回调状态---->XX已完成----->准备生成BB确认台账");
} else {
logger.info("回调状态---->XX未完成....");
}
}
} catch (Exception e) {
e.printStackTrace();
logger.error("XX完成---->BB确认自动生成台账织入失败....");
}
}
}
平时我们的判空代码直接是抄过来的
<if test="status!= null and status!= ''">
status=#{status},
</if>
解决方案
<if test="status!= null>
status=#{status},
</if>