2017-06-05 108 views
0

我用@NotNull注释了我的豆,并在@GetMapping中使用弹簧@Valid注释。但是这不起作用。Spring webflux是否支持javax bean验证?

我从其他应用程序看到的唯一差别是我使用@EnableWebMvc而不是@EnableWebFlux

在控制器:

@PostMapping(value = "/something") 
    public Mono<ResponseEntity> save(
           @Valid @RequestBody MyBean mybean) { 
     return myService.save(myBean) 
       .map(RestResponses::ok) 
       .defaultIfEmpty(RestResponses.empty()); 
    } 

在Application.java:

@SpringBootApplication 
    @EnableWebFlux 
    public class Application { 

     public static void main(String[] args) { 
      SpringApplication.run(Application.class, args); 
     } 
    } 

我bean类:

import org.springframework.data.annotation.Id; 
    import org.springframework.data.redis.core.RedisHash; 
    import org.springframework.data.redis.core.index.Indexed; 

    import javax.validation.constraints.NotNull; 
    import java.util.Objects; 

    @RedisHash("mybean") 
    public class MyBean { 

     @Id 
     private Long id; 

     @NotNull 
     @Indexed 
     private String name; 

     //getters, setters... 

    } 

和pom.xml中:

<parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>2.0.0.M1</version> 
     <relativePath/> <!-- lookup parent from repository --> 
    </parent> 

... 

<dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-redis</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-webflux</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-security</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>io.netty</groupId> 
      <artifactId>netty-all</artifactId> 
     </dependency> 

</dependencies> 

我做错了什么?

+0

请问您可以添加get方法的代码吗? –

+0

@Orest,完成!感谢您的关注。 –

+0

和'MyBean'类。另外你有什么春季启动版本'2.0.0M1'? –

回答

1

实际上有一些依赖性问题。 在依赖你可以看到这两个库:

org.hibernate:hibernate-validator:5.4.1.Final 
javax.validation:validation-api:1.1.0.Final 

而且根据文档Hibernate Validator你应该Unified Expression Language

compile group: 'org.glassfish', name: 'javax.el', version: '3.0.1-b08' 

@Valid注释应该按预期工作提供额外的依赖。

+0

谢谢,但我已经拥有了所有这些依赖关系。 –

相关问题