gpt4 book ai didi

java - 自定义注释仅适用于 ElementType.METHOD

转载 作者:行者123 更新时间:2023-12-02 10:14:14 24 4
gpt4 key购买 nike

我正在练习自定义注释,我想创建一个自定义注释,将 Math.random() 值设置为 @Entity 字段(我知道我可以在构造函数中执行此操作,但我想使用注释)

  1. 我的注释:

    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.CONSTRUCTOR)
    公共(public)@interface SetRandomPin {}

2.我的方面

@Around("@annotation(com.testingAnnotations.annotattions.SetRandomPin)")
public void setUserPin(ProceedingJoinPoint joinPoint) throws NoSuchMethodException {....}
}

在我的 @Entity 中,当我将 @SetRandomPin 放入构造函数中时,setUserPin 方法不会触发。

仅当我更改为 ElementType.METHOD 并将注释移至 UserService.class 时,该方法才会触发。

我被困在这里,我不明白为什么可以使用 ElmentType 而不能使用另一个 ElmentType。

最佳答案

默认的 Spring AOP 不提供构造函数拦截或私有(private)/ protected 方法。您可以使用 AspectJ 来完成此操作。

来自docs

If your interception needs include method calls or even constructors within the target class, consider the use of Spring-driven native AspectJ weaving instead of Spring’s proxy-based AOP framework.

关于java - 自定义注释仅适用于 ElementType.METHOD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54785346/

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