为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以在运行时(而非编译时)进行验证检查?

是否可以在运行时(而非编译时)进行验证检查?

宝慕林4294392 2021-05-03 13:27:55
使用以下Java代码:public class Bean{  private String value;  public Bean(@NonNull String value) {    //Usually fail-fast validation can be added here if it is needed    this.value = value;  }  public String getValue() {return this.value;}}是否有可能来检查构造参数 value由的方式诠释,@NonNull在运行时间比其他的编译时间?我个人仍然没有找到任何检查框架,该框架可以在运行时进行验证检查。但是,是否可以实现注释处理器来进行运行时检查?
查看完整描述

3 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

您应该从javax.validation.constraints看@NotNull。我在模型中使用它,当我尝试使用空@NotNull值保存模型时,它引发了Constraint异常。


导入是 import javax.validation.constraints.NotNull;


如果您使用的是Spring和mongodb,则必须对其进行配置才能运行,我在Internet上的某个地方找到了一段代码(不记得在哪里),可以使用它:


import org.springframework.beans.factory.annotation.Qualifier;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.data.mongodb.core.mapping.event.ValidatingMongoEventListener;

import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;


@Configuration

public class CustomRepositoryRestConfigurerAdapter {

    @Bean

    public LocalValidatorFactoryBean localValidatorFactoryBean() {

        return new LocalValidatorFactoryBean();

    }


    @Bean

    public ValidatingMongoEventListener validatingMongoEventListener(

            @Qualifier("localValidatorFactoryBean") LocalValidatorFactoryBean lfb

    ) {

        return new ValidatingMongoEventListener(lfb);

    }

}


查看完整回答
反对 回复 2021-05-26
?
繁星coding

TA贡献1797条经验 获得超4个赞

在您的末端有误解:您的问题没有一个单一的答案。

在此类源代码上使用某些注释时,主要是针对编译时。就像某些静态分析工具一样,该工具会分析数据流以告诉您您在此处或此处违反了“带注释的”合同。

但是某些注释在运行时也会使用,例如与“ beans”一起使用。这样的对象可能作为HTTP请求的参数进入,然后您需要一些框架来检查根据注释指定的规则,例如,以JSON接收的内容是否有效。有关示例,请参见本教程


查看完整回答
反对 回复 2021-05-26
  • 3 回答
  • 0 关注
  • 342 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信