小编may*_*ats的帖子

如何使用基于组的@Validated注释验证方法参数

我有一个实体 XYZ.java

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class XYZ extends BaseEntity implements Serializable {

  @NotNull (groups = {Groups.Insert.class, Groups.Delete.class, Groups.Update.class, Groups.Select.class})
  private String X;
Run Code Online (Sandbox Code Playgroud)

并且有一个接口XYZCRUD.java可以进行CRUD操作XYZ.java

@Validated
public interface XYZCRUD {

  public int insert(@Valid XYZ entity) throws SomeException;
Run Code Online (Sandbox Code Playgroud)

虽然javax的@Valid适用于@NotNull验证,但它不支持将验证组作为注释属性从我触发验证的方法中传递.所以我尝试使用@Validated注释,它允许通过像这样的属性"值"传递组

@Validated
public interface XYZCRUD {

      public int insert(@Validated(value=SomeGroup.class) XYZ entity) throws SomeException;
Run Code Online (Sandbox Code Playgroud)

但是它根本不会触发验证.我在从字段中删除groups属性后尝试,也从触发器注释中删除.

结论: @Validated不会触发@NotNull

问题:

  1. 为什么@Validated不会触发javax的@NotNull?我做错了什么或不支持它?
  2. 还有其他方法吗?无法实现自定义验证器

注意:如果它与此有关,我也使用lombok.

java validation spring

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

我应该从Redis群集奴隶中读取吗?

我们有一个用于Redis的集群配置用作缓存.现在由于写入master和从slave(与其他数据库)读取的正常模式,我们正在尝试使用Redis集群执行相同的操作.
经过一番调查后,我们发现redis,jedis和Spring Data Redis都没有支持Redis客户端(在java中).我们似乎找到了一些解决方法,但它似乎很难看,现在我在想它是否值得?

这是我的用例

  • 最高QPS:1000
  • 有效载荷大小:最大1 MB(压缩后)
  • 群集大小3掌握每个2个从属(相当高规格的机器)
  • Cringe部分:此群集的实际网络带宽为1GB(分别为群集内通话时为1 GB)

考虑到这一点,我有以下问题:

  • 它(从奴隶那里读)会以任何方式帮助我吗?
  • 我应该避免任何坑洞(任何特殊的服务器端配置)?
  • 狭窄的道路会成为一个问题吗?
  • 是否有正确执行此操作的标准方法(库/客户端)

非常感谢任何帮助(博客,案例研究,建议).

java redis jedis redisson redis-cluster

5
推荐指数
2
解决办法
6083
查看次数

标签 统计

java ×2

jedis ×1

redis ×1

redis-cluster ×1

redisson ×1

spring ×1

validation ×1