如何让 Aspect 对 Pojo 中的所有吸气剂起作用

How to get Aspect working on all getters in Pojo

我的目标是使用 Aspect 和 Spring AOP 对 Pojo 中的所有 getter 进行一些更新。我想做一些像 "haha" + Str 当我做 getter.

这是我的看点:

@Slf4j
@Aspect
@Configuration
public class GetterAspect {
  @Before("execution(* com.docusign.docusign.dto.AspectPojo.getName())")
  public void before(JoinPoint joinPoint) {
    log.info(" Check before pojo");
    log.info("", joinPoint);
  }
}

这是我的 Pojo:

@Data
public class AspectPojo {
  private String name;
  private String email;
}

这是我的测试 ctrl:

@GetMapping
public AspectPojo get() {
  AspectPojo pojo = aspectManager.getPojo();
  log.info(pojo.getName());
  return pojo;
}

我无法触发切入点,如果有人能帮忙,我将不胜感激。

Spring AOP 不支持 AspectJ 标准的所有功能。我记得只有 Spring 个 bean 的 public 个方法可以由 Spring AOP 处理。如果您的吸气剂在 @Controller@Component@Service 注释 class 中,它将被处理,但例如 JPA 实体不能以这种方式处理。