Spring-Data-MongoDB를 취득하여 오브젝트를 검증하려면 어떻게 해야 합니까?
Spring-Data-Mongodb를 사용하는 매우 간단한 Spring Boot 어플리케이션이 있습니다.
저장하는 오브젝트에 사용자 이름이 있어야 한다는 JSR-303 검증 규칙을 설정하기만 하면 됩니다.JSR-303은 버전 1.1에서 spring-data-mongodb에 추가되었다고 읽었기 때문에 오브젝트를 저장하면 검증이 된다고 생각했지만 그렇지 않습니다.
이것이 어떻게 동작하는지를 나타내는 간단한 설정 예를 가지고 있는 사람이 있습니까?
내 사용자 pojo는
public class User {
@Id
private String id;
@NotNull(message = "User Name is compulsory")
private String userName;
private String password;
public User() {}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = PasswordAuthService.hash(password);
}
}
컨텍스트에 검증자가 생성되어 있는 경우에만 검증이 시작되는 것을 보고 애플리케이션 클래스(모든 구성이 포함되어 있음)를 다음과 같이 업데이트하려고 했습니다.
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {
@Bean
public Validator getValidator() {
LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
return validator;
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
먼저 클래스 패스에 JSR-303 검증기가 있는지 확인합니다.다음은 예를 제시하겠습니다.
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.2.0.Final</version>
</dependency>
Java config를 사용하는 경우 다음 2개의 콩을 만듭니다.
@Bean
public ValidatingMongoEventListener validatingMongoEventListener() {
return new ValidatingMongoEventListener(validator());
}
@Bean
public LocalValidatorFactoryBean validator() {
return new LocalValidatorFactoryBean();
}
Voila! 이제 검증이 작동합니다.
Spring Boot 2.3부터는 Spring-boot-starter-validation 의존관계를 에 추가해야 합니다.pom.xml
(Maven의 경우):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
검증자 bean을 선언할 필요는 없습니다.
추가Validator
문맥에 맞게 하는 것이 좋은 첫걸음이지만, 당신이 요청하지 않는 한 어떤 것과도 상호 작용하지 않을 거라고 생각합니다.Spring Data의 사람들은 분명히 말할 수 있을 것입니다만, 저는 당신이 몇몇 청취자를 분명히 선언할 필요가 있다고 생각합니다.이 기능에 관한 오래된 블로그가 있지만, 가능한 한 쉽게 검색하면 찾을 수 있습니다.
Spring Boot에 유용한 autoconfig 기능이 있다고 생각되는 경우 github에 대한 자세한 제안을 해 주십시오.
제가 찾은 바로는,
public User addUser(@RequestBody @Valid User newUser,
BindingResult bindingResult) throws Exception {
if (bindingResult.hasErrors()) {
throw new Exception("Validation Error");
}
컨트롤러에 대해서, 이것은 착신 json을 규칙에 근거해 검증합니다만, 무효인 데이터로 모델을 갱신하려고 하는 코드의 다른 부분을 대행 수신하도록, validatingMongoEventListener 를 설정해 둘 필요가 있습니다.
언급URL : https://stackoverflow.com/questions/22568962/how-to-i-get-spring-data-mongodb-to-validate-my-objects
'programing' 카테고리의 다른 글
리다이렉트 기능이 있는 스프링 부트 (1페이지 angular 2) (0) | 2023.04.06 |
---|---|
열거를 문자열로 직렬화 (0) | 2023.04.06 |
각도 이해JS ng-src (0) | 2023.04.06 |
React에서 화면 크기가 모바일로 변경되었는지 감지하는 방법 (0) | 2023.04.06 |
POST: URL 자체에서 POST 요청 전송 (0) | 2023.04.06 |