在 Hibernate 实体中使用 aspectj
Using aspectj in Hibernate entity
我有这样的实体 class:
package tr.com.example.model.porting
...//omitting imports
@Configurable
@Data
@Entity
public class PortOut{
public void handleRequest(Long portingId) {
processRequest(portingId);
...
}
}
这里是我在不同 class 中用 @Aspect 和 @Component 注释的方面代码:
@Around("execution(* tr.com.example..PortOut.handleRequest(..))")
public void handlePortingProcessAdvice(ProceedingJoinPoint joinPoint) throws Throwable {
joinPoint.proceed();
log.debug(log.debug("[POM]:{} is executed with parameters:{}", joinPoint.toShortString(), joinPoint.getArgs()))
}
通常,我的方面代码工作正常 对于其他 Spring 管理的 classes,例如使用 @服务,@Component注解。我正在使用 https://github.com/subes/invesdwin-instrument 作为织造剂,并且还使用 Lombok.
我尝试了 this link(以及其他 so 帖子)。但是由于我使用的是 Lombok,我无法使用 aspectj 编译器直接编译以编织 @Configurable classes,正如我发现的那样,它不适用于 Lombok。
https://groups.google.com/forum/#!topic/project-lombok/ZkLsTZVSgD4
简而言之,我想要的是使用 aspectj 来记录一些方法的参数,但我不能在任何 Hibernate 实体 class 中使用它,除此之外工作正常。如何让它在实体 classes 中工作?
Here 你找到了为什么 Lombok 和 AspectJ 不喜欢对方的原因。
什么是said to work though, is to delombok the Lombok-annotated source code and then normally compile the generated source code with the AspectJ compiler (e.g. via AspectJ Maven plugin, which is what I use all the time in Maven projects). Assuming you do use Maven, also the delombok step can be done with Lombok Maven plugin。如果您为各个插件分配正确的阶段,应该可以完全自动化构建过程。
免责声明:我一生从未使用过 Lombok,但对 AspectJ 和 Maven 略知一二。
我有这样的实体 class:
package tr.com.example.model.porting
...//omitting imports
@Configurable
@Data
@Entity
public class PortOut{
public void handleRequest(Long portingId) {
processRequest(portingId);
...
}
}
这里是我在不同 class 中用 @Aspect 和 @Component 注释的方面代码:
@Around("execution(* tr.com.example..PortOut.handleRequest(..))")
public void handlePortingProcessAdvice(ProceedingJoinPoint joinPoint) throws Throwable {
joinPoint.proceed();
log.debug(log.debug("[POM]:{} is executed with parameters:{}", joinPoint.toShortString(), joinPoint.getArgs()))
}
通常,我的方面代码工作正常 对于其他 Spring 管理的 classes,例如使用 @服务,@Component注解。我正在使用 https://github.com/subes/invesdwin-instrument 作为织造剂,并且还使用 Lombok.
我尝试了 this link(以及其他 so 帖子)。但是由于我使用的是 Lombok,我无法使用 aspectj 编译器直接编译以编织 @Configurable classes,正如我发现的那样,它不适用于 Lombok。 https://groups.google.com/forum/#!topic/project-lombok/ZkLsTZVSgD4
简而言之,我想要的是使用 aspectj 来记录一些方法的参数,但我不能在任何 Hibernate 实体 class 中使用它,除此之外工作正常。如何让它在实体 classes 中工作?
Here 你找到了为什么 Lombok 和 AspectJ 不喜欢对方的原因。
什么是said to work though, is to delombok the Lombok-annotated source code and then normally compile the generated source code with the AspectJ compiler (e.g. via AspectJ Maven plugin, which is what I use all the time in Maven projects). Assuming you do use Maven, also the delombok step can be done with Lombok Maven plugin。如果您为各个插件分配正确的阶段,应该可以完全自动化构建过程。
免责声明:我一生从未使用过 Lombok,但对 AspectJ 和 Maven 略知一二。