校验注解使用

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,目前只支持在真实调用方法上添加

使用场景:

  1. 配置开关次数限制:对接第三方,需要对非生产环境进行开关和次数限制,如果关闭或次数超限,则启用 mock 实现;
  2. 项目环境(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