gpt4 book ai didi

java - Spring Boot 验证不适用于所有 bean

转载 作者:行者123 更新时间:2023-11-30 08:14:56 26 4
gpt4 key购买 nike

我有一个 spring-boot:1.2.3 应用程序,并且遇到 2 个验证问题:

  • 它适用于 @Path 端点,但不适用于 @Service 或 @Component 类
  • 如果验证失败,它不会抛出或记录任何内容,只会返回 400,没有任何其他信息

这些是 spring-boot:1.2.3 附带的验证库:

[INFO] |  +- org.hibernate:hibernate-validator:jar:5.1.3.Final:compile
[INFO] | | +- javax.validation:validation-api:jar:1.1.0.Final:compile
[INFO] | +- org.glassfish.jersey.ext:jersey-bean-validation:jar:2.14:compile

这些是 spring-boot-starter-log4j 附带的日志库:

[INFO] +- org.springframework.boot:spring-boot-starter-log4j:jar:1.2.2.RELEASE:compile
[INFO] | +- org.slf4j:slf4j-log4j12:jar:1.7.10:compile
[INFO] | \- log4j:log4j:jar:1.2.17:compile

此验证有效,但不记录或显示任何堆栈跟踪:

@Component
@Path("/validation-example")
public class ValidationExampleResource {

@GET
@Path("/{positiveNumber}")
public int validationExample(@Min(0) @PathParam("positiveNumber") int positiveNumber) {
...
}
}

但是验证在这里根本不起作用:

@Service
public class ValidationExampleServiceImpl implements ValidationExampleService {

@Override
public int validationExample(@Min(0) int positiveNumber) {
...
}
}

最佳答案

尝试这个配置。在我的项目中它有效! Spring 启动:1.5.9.RELEASE

@Slf4j
@Service
@Validated
public class ValidationService {

@Validated(CreateGroup.class)
public void create(@Valid User user) {
log.info("验证服务业务的作用");
}

public void basic(@NotNull(message = "名称不能为空") String name) {

}

}

Details

关于java - Spring Boot 验证不适用于所有 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29795343/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com