【发布时间】:2020-01-25 22:34:30
【问题描述】:
我想对我的 spring 服务的参数使用 java bean 验证注释。考虑以下服务:
public interface MyService {
void methodA();
void methodB(@NotBlank String param)
}
实施:
@Validated
public class MyServiceImpl implements MyService {
@Override
public void methodA() {
String param = "";
methodB(param)
}
@Override
public void methodB(@NotBlank String param) {
// some logic
}
}
你能告诉我当传递的字符串为空时如何触发验证并抛出约束异常吗?当我以这种方式调用服务时:
@Autowired
MyService myService;
myService.methodB("");
当从另一个类调用methodB时,会按预期抛出约束异常。
但是当同样的methodB 被调用表单MethodA 时,不会抛出异常。为什么调用同一个参数的同一个方法不抛出异常?
【问题讨论】:
-
我不确定我是否遵循。您说约束是按预期抛出的,那么为什么需要“触发验证并抛出约束异常”? Spring 正在为你做这件事。
-
我投票决定将此问题作为离题结束,因为 OP 描述的代码的当前行为符合预期。
-
@mentallurg 我同意戴夫的观点:OP 说抛出异常,这是意料之中的。 OP 确实需要做任何事情——它已经在工作了。
-
@mentallurg 问题在我关闭后被编辑。 现在是有道理的:)
标签: java spring-boot bean-validation spring-validator