我正在使用Spring framework(4.0.5)和AspectJ开发用于AOP日志记录的Java(JDK1.6)应用程序。

我的Aspect类工作正常,但无法为构造函数对象创建切入点。

这是我的对象:

@Controller
public class ApplicationController {
    public ApplicationController(String myString, MyObject myObject) {
        ...
    }
    ...
    ..
    .
}

这是我的Aspect类:
@Aspect
@Component
public class CommonLogAspect implements ILogAspect {
    Logger log = Logger.getLogger(CommonLogAspect.class);

    // @Before("execution(my.package.Class.new(..)))
    @Before("execution(* *.new(..))")
    public void constructorAnnotatedWithInject() {
        log.info("CONSTRUCTOR");
    }
}

如何为构造函数对象创建切入点?

谢谢

最佳答案

Sotirios Delimanolis是正确的,因为Spring AOP不支持构造函数拦截,因此您确实需要完整的AspectJ。 Spring手册的9.8 Using AspectJ with Spring applications章介绍了如何将其与LTW(加载时编织)一起使用。

此外,您的切入点有问题

@Before("execution(* *.new(..))")

构造函数没有诸如AspectJ语法中的方法之类的返回类型,因此您需要删除开头的*:

@Before("execution(*.new(..))")

关于java - Spring-具有注释的构造函数对象的AspectJ切入点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27527495/

10-10 18:05