【问题标题】:When would @NotNull throws exception?@NotNull 什么时候会抛出异常?
【发布时间】:2019-02-13 00:34:33
【问题描述】:

我在 POJO 之一中使用 javax.validation.constraints.NotNull,如下所示:

public class Abc {

@NotNull
private final String x;

@NotNull
private final String y;
}

然后,即使我将 Abc 的对象的两个字段都设置为空值,它也不会引发任何异常。知道为什么吗?

例如。

Abc abc = new Abc(null, null);

不会抛出任何异常。

【问题讨论】:

    标签: java validation


    【解决方案1】:

    注释只是附加在它们注释的项目上的额外信息;它们本身没有内置逻辑。如果您使用Lombok 或 Kotlin 语言之类的工具,编译器可能支持基于注释自动添加逻辑,但否则,它们不会“做任何事情”,直到您实际进行主动检查(例如,通过通过验证器运行您的 POJO)。

    【讨论】:

    • 那么,这些注释@NotNull 有什么用呢?
    • @hatllla 使用验证器,或使用外部工具。
    【解决方案2】:

    也许这个类似问题的答案对你有帮助。

    要激活参数验证,只需使用 @Validated 注释类

    Question link

    【讨论】:

      【解决方案3】:

      对于注解Spring需要你的类的代理的实现,所以你可以实现异常行为,以防你将Spring bean注入到你的某些类并调用Spring代理注入的方法,这样就会抛出异常并且不要忘记你的组件应该被注释为@Validated

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-18
        相关资源
        最近更新 更多