猿问

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

使用以下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在运行时间比其他的编译时间?我个人仍然没有找到任何检查框架,该框架可以在运行时进行验证检查。但是,是否可以实现注释处理器来进行运行时检查?


宝慕林4294392
浏览 343回答 3
3回答

呼唤远方

您应该从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;@Configurationpublic class CustomRepositoryRestConfigurerAdapter {    @Bean    public LocalValidatorFactoryBean localValidatorFactoryBean() {        return new LocalValidatorFactoryBean();    }    @Bean    public ValidatingMongoEventListener validatingMongoEventListener(            @Qualifier("localValidatorFactoryBean") LocalValidatorFactoryBean lfb    ) {        return new ValidatingMongoEventListener(lfb);    }}

繁星coding

在您的末端有误解:您的问题没有一个单一的答案。在此类源代码上使用某些注释时,主要是针对编译时。就像某些静态分析工具一样,该工具会分析数据流以告诉您您在此处或此处违反了“带注释的”合同。但是某些注释在运行时也会使用,例如与“ beans”一起使用。这样的对象可能作为HTTP请求的参数进入,然后您需要一些框架来检查根据注释指定的规则,例如,以JSON接收的内容是否有效。有关示例,请参见本教程。
随时随地看视频慕课网APP

相关分类

Java
我要回答