Skip to main content

7 posts tagged with "spring"

View All Tags

通过增加timeout-control以解决当tcp连接一直处于SYN_SENT状态导致java中的ldap-client的failover不工作的问题

· 8 min read
orange
programmer on jvm platform

今天遇到一个问题是当测试模拟ldap的服务端主节点挂掉的时候并在页面点击登录, 后端一直未作出响应.
这个问题的原因是因为代码中的ldap-clientfailover未生效, 通过排查发现ldap-client一直在连接ldap的主节点, 并且tcp连接一直处于SYN_SENT状态.
由于ldap-client没有默认情况下没有控制超时, 导致代码一直堵塞, 从而导致failover不工作.
下面将开始介绍具体细节以及解决方案.

基于clojure表达式实现更加灵活的数据验证

· 13 min read
orange
programmer on jvm platform

数据验证是一个非常常见的需求, 对于java项目来说, 目前jakartabean validation已经成为了java中的标准.
其自带了一些常见的数据验证注解, 例如@NotNull, @NotEmpty, @Size等.
这些注解如果遇到复杂的数据验证需求时, 就会显得力不从心. 所以需要一种更加灵活的数据验证方式.
为了满足这种需求, 我们可以通过clojure表达式来实现数据验证.
同时我们需要和现有的bean validation一起使用, 以便于满足现有的业务需求.

springdoc-v2中在不配置@ParameterObject的情况下实现Pageable以及Sort对象到API参数的转换

· 5 min read
orange
programmer on jvm platform

springdoc是一个可以快速生成API文档的第三方公共库, 并提供了UI页面以供访问.
同时它也提供了spring-webmvc中的handler中的参数对象到API参数的转换.
对于spring-data-commons中的PageableSort, springdoc提供了开箱即用的功能, 需要在配置文件中启用以及在参数中声明@ParameterObject

application.yml
springdoc:
model-converters:
pageable-converter:
enabled: true

对于已经存在的项目, 当刚引入springdoc时, 需要配置大量的@ParameterObject注解以实现参数转换功能.
这个过程通常比较繁琐, 因为对于一个具有一定规模的项目而言, 其对外提供的API往往会非常多, 需要进行大量的修改功能才能实现该功能
那么此时我们需要一种解决方案, 即如何在不配置@ParameterObject的情况下实现Pageable以及Sort对象到API参数的转换