如何让Aspect在Pojo的所有getter上工作

时间:2019-09-20 12:03:49

标签: spring-boot aop aspectj

我的目标是通过使用Aspect和Spring AOP对Pojo中的所有getter进行一些更新。我想做些类似的事情,当我做吸气剂时,我可以得到“ haha​​” + Str。

这是我的观点:

@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;
}

我无法触发切入点,如果有人可以提供帮助,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

Spring AOP不支持AspectJ标准的所有功能。我记得Spring AOP只能处理Spring Bean的公共方法。如果您的吸气剂处于@Controller@Component@Service带注释的类中,则将对其进行处理,但例如JPA实体将无法通过这种方式进行处理。