我试图理解AspectJ是如何工作的,所以我构建了这个非常简单的例子。我可以从Web浏览器执行x()但是applaud()永远不会被执行。为什么?我怎样才能执行它(除了在x()中调用它?)我试图在不创建xml的情况下完成所有这些操作。 我的环境是Java,Spring,AspectJ,IntelliJ和Windows 10。
package hello;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Aspect
@Configuration
@EnableAspectJAutoProxy
public class SomeClass {
@RequestMapping("/x")
@Pointcut("execution(* hello.SomeClass.x())")
public String x() {
System.out.println("in x");
return "<div><h1>Some content</h1></div>";
}
@After("hello.SomeClass.x()")
public void applaud() {
System.out.println("CLAPCLAPCLAPCLAPCLAP");
}
}