当前位置: 首页 > 知识库问答 >
问题:

java验证注释是否在AOP之前运行

范翰海
2023-03-14

我是新来的春靴AOP。

用@Before注释的AOP方法是否在java验证注释(例如@NotNull)之前运行?

我还需要为每个请求运行一些其他自定义验证,但我需要在java验证注释运行之后运行这些验证。

哪个先跑?

我的控制器:

@RestController
@RequestMapping("/users")
public class UserController {

    private final UserService userService;

    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }

    @PostMapping(value = "")
    public List<User> getAllUsers(@Valid @RequestBody User user) {
        return userService.getAllUsers();
    }
}

我的建议是:

@Aspect
@Component
public class AspectConfig {

    @Pointcut(value = "within(@org.springframework.web.bind.annotation.RestController *)")
    public void restControllers() {

    }

    @Before(value = "restControllers()")
    public void logRequest(JoinPoint joinPoint) { 
         ...
    }

}

共有1个答案

万俟华辉
2023-03-14

在java验证注释之前,使用注释的AOP方法是否运行

不,它在之后运行,就像你希望的那样。又见这个问题。所以你应该都准备好了。只有在验证成功时才应触发日志记录建议,因为只有在验证成功时才会调用目标方法。

您可以实现一个HandlerInterceptor,如果您希望在验证器启动之前在请求级别上记录/执行某些操作,请参阅此处。

 类似资料:
  • 我有一个自定义注释,如下所示 我定义了一个方面来包装实际的方法调用 注释的用法如下所示 到目前为止,这工作得很好,我可以在TestableAspect#InvkeAndLog中实现我的登录。 现在我需要验证eg的索引值不大于10。 我可以在运行时通过更改方面实现来实现,如下所示 但这需要至少调用一次API,而且效率不高。是否有一种方法可以在spring启动应用程序启动时执行此操作?

  • 我想使用Mongock迁移工具来初始化存储在数据库中的应用程序配置。我遇到的问题是我的一个配置在使用@Configuration注释的类中使用。由于Mongock更改集在@Configuration之后执行,它无法从数据库中检索尚未存在的值,这会导致应用程序崩溃。有没有办法推迟创建@Configuration类?或者我应该在不使用mongock的情况下初始化这个配置?

  • 使用Spring进行集成测试,我可以填充一个运行脚本的测试数据库,如下所示... 我使用的是JUnit4、Spring Boot、Java15、TestContainers。 我试过的事情... 我曾尝试在我的测试类扩展的类上使用,但它似乎在我的测试之后运行。 TestContainers确实有一个init脚本函数,但它只接受一个文件,这并不理想。 我也尝试过,但是出于某种原因,测试容器不喜欢这样

  • 问题内容: 是否可以在运行时关闭每个类的某些约束/注释?例如,如果我想对一个字段进行检查,那可能吗? 这将使测试更容易查看某个约束是否正确正确触发,因为我可以关闭所有其他约束,而只需检查一个约束即可。 问题答案: 是否可以在运行时关闭每个类的某些约束/注释?例如,如果我想对firstName字段进行@NotNull检查,那可能吗? 不它不是。Bean验证未定义此类功能。Hibernate Vali

  • 我们正在使用QUIKUS框架,并https://quarkus.io/guides/getting-started-reactive提到我们可以在一个方法、类上使用@阻塞来指示QUIKUS在一个工作线程上调用这个方法。 但是,我们如何确切地验证它使用的是工作线程呢?

  • 本文向大家介绍Java之Spring AOP 实现用户权限验证,包括了Java之Spring AOP 实现用户权限验证的使用技巧和注意事项,需要的朋友参考一下 每个项目都会有权限管理系统 无论你是一个简单的企业站,还是一个复杂到爆的平台级项目,都会涉及到用户登录、权限管理这些必不可少的业务逻辑。有人说,企业站需要什么权限管理阿?那行吧,你那可能叫静态页面,就算这样,但你肯定也会有后台管理及登录功能