Возможно ли проводить проверку валидации во время выполнения, отличное от времени компиляции?

Я обычно исправляю этот комментарий после этого сообщения в блоге msdn Использование LocalDB с полным IIS

Для этого требуется отредактировать файл applicationHost.config, который обычно находится в папке C: \ Windows \ System32 \ Inetsrv \ Config. Следуя инструкциям из KB 2547655, мы должны включить оба флажка для Application Pool ASP.NET v4.0, например:


    

0
задан Rui 13 July 2018 в 14:11
поделиться

3 ответа

Заблуждение в конце: на ваш вопрос нет единого ответа.

Некоторые аннотации, используемые в исходном коде, такие как в основном , таргетируют время компиляции. Как и инструмент статического анализа, который анализирует поток данных, чтобы сообщить вам, что вы нарушаете «аннотированные» контракты здесь или там.

Но некоторые аннотации также «предназначены» для использования во время выполнения, например используется с «бобами». Такие объекты могут входить в качестве параметра HTTP-запроса, а затем у вас есть какая-либо проверка фреймов, если контент, полученный как JSON, например, действительно действителен, в соответствии с правилами, указанными в аннотациях. См. Этот учебник для некоторых примеров.

0
ответ дан GhostCat 17 August 2018 в 12:39
поделиться

Да. Lombok's @NonNull - это проверка времени выполнения, которая просто вставляет if-инструкцию с броском:

С Lombok

import lombok.NonNull;

public class NonNullExample extends Something {
  private String name;

  public NonNullExample(@NonNull Person person) {
    super("Hello");
    this.name = person.getName();
  }
}

Vanilla Java

import lombok.NonNull;

public class NonNullExample extends Something {
  private String name;

  public NonNullExample(@NonNull Person person) {
    super("Hello");
    if (person == null) {
      throw new NullPointerException("person is marked @NonNull but is null");
    }
    this.name = person.getName();
  }
}
1
ответ дан Michael 17 August 2018 в 12:39
поделиться

Вы должны взглянуть на @NotNull из javax.validation.constraints. Я использую его в своих моделях и бросаю исключение Constraint, когда пытаюсь сохранить модель с нулевым значением @NotNull.

Импорт import javax.validation.constraints.NotNull;

Если вы используете Spring и mongodb, вам придется настроить его так, чтобы он работал, я нашел фрагмент кода где-то в Интернете (не помню, где), вы можете его использовать:

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);
    }
}
0
ответ дан Tristan MARIE 17 August 2018 в 12:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: