目前我有这样的代码:
@RabbitListener(queues = "${rabbitmq.queue}")
public void receivedMessage(TransferPayment transferPayment) {
log.info("Received message: {}", transferPayment);
// TODO: please correct
if (transferPayment.getData().getSecurity() != null &&
transferPayment.getData().getNotification() != null &&
transferPayment.getData().getTransfer() != null &&
transferPayment.getData().getDisbursementDestination() != null &&
transferPayment.getData().getDisbursementDestination().getThirpartyDestination() != null &&
transferPayment.getData().getCustomer() != null &&
transferPayment.getData().getCustomer().getIdentification() != null &&
transferPayment.getData().getLoans() != null) {
notificationUseCase.notifyPayment(transferPayment);
}
}
字符串
的数据
我想改进条件,并能够以更干净的方式正确执行相同的验证。请记住,由于SonarLint的问题,我不能在条件中使用超过5个逻辑运算符,我也想纠正这一点。我使用的是干净的架构,这段代码在基础设施层,对象TransferPayment
在域层。
1条答案
按热度按时间cgvd09ve1#
您可以向消息处理程序工厂添加一个验证器,并使用
@Valid
注解参数;这使验证具体化。https://docs.spring.io/spring-amqp/docs/current/reference/html/#async-annotation-driven-enable-signature
https://docs.spring.io/spring-amqp/docs/current/reference/html/#rabbit-validation
SonarLint问题我不能使用超过5个逻辑运算符
您可以通过将中间结果存储在本地布尔值中来减少条件计数,然后检查所有结果是否为真。