小编Cha*_*hra的帖子

Bean 验证不适用于 spring webflux

我已经重构了我的代码以使用 spring webflux 但现在@Valid停止工作。它不验证请求正文。

@PostMapping(value = "/getContactInfo",produces = "application/json",consumes = "application/json")
public Flux<UserContactsModel> getUserContacts(@Valid @RequestBody Mono<LoginModel> loginDetail) {

    loginDetail.log();
    return contactInfoService
        .getUserContacts(loginDetailApiMapper.loginModelMonoToLoginBoMono(loginDetail))
        .flatMapIterable(
            userContactsBO -> contactInfoMapper.userContactBoToModelList(userContactsBO));
}
Run Code Online (Sandbox Code Playgroud)

我收到 200 OK 代替了我从控制器建议返回的 Bad request。

编辑1:

   import javax.validation.constraints.NotNull;
   import javax.validation.constraints.Pattern;

    public class LoginModel implements Serializable {

      private String clientId;

      @Pattern(regexp = "^[a-zA-Z0-9]*$", message = "Login ID is invalid")
      @NotNull
      private String loginId;
    }
Run Code Online (Sandbox Code Playgroud)

更新1: 像这样更改代码并在类级别添加@Validated之后

@RestController
@Validated
public class ContactInfoController implements ContactInfoApi {
public Flux<UserContactsModel> getUserContacts(@RequestBody  Mono<@Valid  LoginModel> loginDetail) { …
Run Code Online (Sandbox Code Playgroud)

java validation spring-boot reactive spring-webflux

13
推荐指数
1
解决办法
1万
查看次数

对假客户端的反应式支持

我计划使用 spring webflux 将我的微服务从阻塞实现重构为反应式 API。我有几个疑问:

1)是否选择基于注解的控制器或功能路由器?2) 是否支持反应式假装客户端?

请帮忙。

spring microservices spring-cloud spring-cloud-feign spring-webflux

6
推荐指数
2
解决办法
9383
查看次数

使用 spring webflux WebClient 发现服务

是否可以将 Ribbon 和 Eureka 服务发现与 spring webflux webclient 一起使用?

我尝试了此代码,但在集成测试期间出现错误。

reactor.core.Exceptions$ErrorCallbackNotImplemented: java.lang.IllegalArgumentException: URI 不是绝对的:/auth-service/auth-service/validate-manager-client-access

@Bean
  @LoadBalanced
  public WebClient loadBalancedWebClient() {
    return WebClient.create(baseURL);
  }

  @Override
  public Mono<Boolean> validateManagerClientAccess(Mono<LoginDTO> loginDTOMono) {
    return webClient
        .post()
        .uri(validateManagerURL)
        .body(loginDTOMono, LoginDTO.class)
        .retrieve()
        .bodyToMono(Boolean.class);
  }

# Remote Services Configuration
remote:
  auth-service:
    service-id: auth-service
    path:
      validate-manager-client-access: /auth-service/validate-manager-client-access
Run Code Online (Sandbox Code Playgroud)

spring spring-boot microservices spring-cloud-netflix reactive

6
推荐指数
1
解决办法
2031
查看次数

更新Swagger code-gen生成的代码

我在spring中使用swagger code-gen从swagger.yaml文件生成了代码.

现在我已经为我的API更新了swagger.yaml文件,并添加了更多的HTTP操作.

是否可以自动更新先前生成的现有代码而无需手动合并?

swagger-ui spring-boot swagger-codegen

5
推荐指数
1
解决办法
3556
查看次数

带有粘性标题和水平、垂直滚动条的垫表

我有一个垫子表,带有粘性标题和页面的垂直滚动。它工作正常,直到我动态添加更多列并出现水平滚动条。

粘性标题停止工作。

有什么办法让它发挥作用吗?

请看例子:

https://stackblitz.com/edit/angular-hdg9xh

html material-design angular-material angular angular-cdk

2
推荐指数
1
解决办法
7074
查看次数

网络客户端:java.lang.OutOfMemoryError:直接缓冲内存

我在 web 客户端收到 java.lang.OutOfMemoryError: Direct buffer memory error。

批处理作业每天运行。它失败了两次,然后在第三次尝试中通过了。

at org.springframework.retry.support.RetryTemplate.rethrow(RetryTemplate.java:532) ~[spring-retry-1.2.5.RELEASE.jar:na]
 Caused by: java.lang.OutOfMemoryError: Direct buffer memory
at reactor.netty.http.client.HttpClientDoOnError$OnErrorTcpClient.connect(HttpClientDoOnError.java:242) ~[reactor-netty-0.9.11.RELEASE.jar:0.9.11.RELEASE]
Run Code Online (Sandbox Code Playgroud)

我在日志中找到的 JVM 内存配置。它在云代工厂中运行。

JVM Memory Configuration: -Xmx342549K -Xss1M -XX:ReservedCodeCacheSize=240M -XX:MaxDirectMemorySize=10M -XX:MaxMetaspaceSize=194026K
Run Code Online (Sandbox Code Playgroud)

失败的代码:

    @Retryable(maxAttemptsExpression = "#{${remote.retry.maxAttempts}}", backoff = @Backoff(delayExpression = "#{${remote.retry.delay}}"))
    public Optional<JobStatusResponseDTO> getStatus(String jobNumber, String accountNumber) {
        return broadridgeClient.getStatus(accountNumber, jobNumber);
    }

      @CircuitBreaker(maxAttemptsExpression = "#{${remote.circuitBreaker.maxAttempts}}",
            openTimeoutExpression = "#{${remote.circuitBreaker.openTimeout}}", resetTimeoutExpression = "#{${remote.circuitBreaker.resetTimeout}}")
    public Optional<JobStatusResponseDTO> getStatus(String account, String jobNumber) {

        JobStatusRequestDTO request = new JobStatusRequestDTO();
        request.setAccount(account);
        request.setJobNumber(jobNumber);

        JobStatusResponseDTO jobStatus;
        jobStatus = client.post() …
Run Code Online (Sandbox Code Playgroud)

java spring cloud-foundry spring-boot spring-webflux

2
推荐指数
1
解决办法
2140
查看次数

OpenCSV错误的日期格式

我正在使用openCSV的CsvToBean类。豆有日期字段。

@CsvDate(value = "yyyy-MM-dd")
@CsvBindByPosition(position = 8)
private Date startDate;
Run Code Online (Sandbox Code Playgroud)

我正在通过传递值“ 2018-25-02 ” 进行负面测试,但它将转换为格林尼治标准时间2020年1月2日星期四00:00:00而不引发任何问题。

java date opencsv

1
推荐指数
2
解决办法
2321
查看次数

带有错误输出的switch语句

我遇到了这个基本问题,其中将开关大小写与字符串一起使用。

在案例之间不使用Break语句,但是为什么即使不匹配case字符串也要在所有案例中使用break语句?

所以我很好奇 为什么输出是3而不是1?

 public static void main(String [] args)
      {
        int wd=0;

        String days[]={"sun","mon","wed","sat"};

        for(String s:days)
        {
          switch (s)
          {
          case "sat":
          case "sun":
            wd-=1;
            break;
          case "mon":
            wd++;
          case "wed":
            wd+=2;
          }
        }
        System.out.println(wd);
      }
Run Code Online (Sandbox Code Playgroud)

java arrays break switch-statement

1
推荐指数
1
解决办法
78
查看次数

Spring Boot 3.0.4 webflux 具有 415 UNSUPPORTED_MEDIA_TYPE

从 2.7.5 升级到 Spring Boot 3.0.4 webflux 后,我收到“415 UNSUPPORTED_MEDIA_TYPE”。服务正在接受并返回 xml 内容。之前工作得很好。

    @PostMapping(
      value = "/sides/Request",
      consumes = MediaType.APPLICATION_XML_VALUE,
      produces = MediaType.APPLICATION_XML_VALUE)
  public Mono<ResponseModel> getSsi(@RequestBody Mono<RequestModel> requestModelMono) {...
}
Run Code Online (Sandbox Code Playgroud)

聚甲醛:

 <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.1</version>
        </dependency>

        

        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-core</artifactId>
 
        </dependency>

    

        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
          
            <scope>runtime</scope>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

java spring spring-boot spring-webflux

1
推荐指数
1
解决办法
5514
查看次数