校验注解使用
1. 定时任务开关
使用注解 @CheckJob
demo:
定时任务方法上使用注解,注解中 value 默认与类名一致,首字母小写,即注入 spring 的 beanId;比如示例中 value 设置为 oneJob
@Component
public class OneJob {
@Scheduled(cron = "0/5 * * * * ?")
@CheckJob("value")
public void execute() {
// do something...
}
}
application.properties 文件配置
# 配置定时任务关闭;不添加/设置不为false,都默认开启;只有设置为false才关闭
job.value=false
结果:(如果关闭定时任务会打印如下日志)
// value值与注解中定义的一致
log.info("job:{} not enable...", value);
2. mock 方法(开关/次数限制)
使用注解 @CheckAndMock,目前只支持在真实调用方法上添加
使用场景:
- 配置开关次数限制:对接第三方,需要对非生产环境进行开关和次数限制,如果关闭或次数超限,则启用 mock 实现;
- 项目环境(profile)限制:指定环境直接 mock 调用;如环境受限(无支付前置机),只能 mock 方法,以免影响开发进程;
::: tip 说明 如设置项目环境限制,开关次数限制失效,优先判断有没设置项目环境限制; :::
demo:
场景一(配置开关次数限制)
mock 注解
public interface ITest {
public static final String BEAN_ID = "test";
String aa(TestDto testDto);
}
@Service(ITest.BEAN_ID)
@Slf4j
public class TestImpl implements ITest{
// propertyPrefix指配置文件前缀,见application.properties配置
@Override
@CheckAndMock(mockClass = MockTestImpl.class, propertyPrefix = "test")
public String aa(TestDto testDto) {
log.info("normal:" + testDto.toString());
return "normal";
}
}
mock 实现,方法名/参数/返回对象需与原方法保持一致
@Service
@Slf4j
public class MockTestImpl{
public String aa(TestDto testDto) {
log.info("mock" + testDto.toString());
return "mock";
}
}
application.properties 文件添加配置
# 代表真实调用是否可用,非mock;不为true/不配置直接mock
test.enable=
# 次数限制,不设置/不配置默认5次
test.numLimit=
场景二(项目环境限制)
替换场景一中注解配置,同样需要提供 mock 实现
// 该配置代表,如果是开发环境,则启用mock方法
@CheckAndMock(mockClass = MockTestImpl.class, mockIfInProfile = {ProjectProfileEnum.DEV})
各系统配置
业务系统 alita 的定时任务开关配置
job.personMonthlyAmountLimitJob.reloadAvailableAmount=false
job.settlementJob.check=false
job.settlementJob.syncApplying=false
job.settlementJob.syncSettling=false
job.settlementJob.syncCreating=false
job.companyStatisticsJob.companyDailyStatistics=false
job.companyStatisticsJob.companyMonthlyStatistics=false
job.fillPersonAndUserJob.fillPersonAndUser=false
job.personVerificationJob.verify=false
job.personVerificationJob.verify=false
结算系统 settlement 的定时任务开关配置
job.refundJob.filterFailTransactionRecord=false
job.updatePayingOrderTask.execute=false
job.verifyJob.autoVerify=false
支付系统 pay 的定时任务开关配置
job.accountJob.syncAccount=false
job.accountJob.syncAccountTransactions=false
job.accountJob.syncAccountTransactionFlows=false
job.accountJob.syncAccountTransactionReceipts=false
job.accountJob.syncAccountTransactionReceiptsInMoon=false
job.orderJob.batchPay=false
job.orderJob.payroll=false
job.orderJob.retry=false
job.orderJob.syncBatchPay=false
job.orderJob.syncPayroll=false
job.orderJob.syncPayment=false
job.orderJob.checkNoExternal=false