Release notes


  • Change the XML configuration format. Remove the name attribute of the interceptor, mixin and interface element. You can directly refer to the aspects using the class attribute. The old pointcut element is renamed to expr (expression), and aspect element is renamed to pointcut. See tutorial for more details.

  • Performance enhancement. Reuse one invocation object in the same thread, eliminate synchronized hashmap lookup of the decorator. Current overhead (Celeron 2G, 256M SDRAM, Win2000): Directly invoke: 5.5E-6 ms, Single interceptor: 3.9685E-4 ms, Single decorator: 8.7815E-4 ms, Single abstract interceptor: 4.609E-4 ms. The code is in the test directory.

  • More OO-style design. Now it is much easier to extend JoyAop to support other APIs such as the interceptor of AOP Alliance. (Of course it also brings more overhead.)
  • Update the site and docs.


  • Migrate to JDK5.0. It means that this library must be run at JDK5.0+.

  • Support the method annotation pointcut. Use annotation(SomeAnnotationClassName) in the expressions to pick out methods, see the RBAC demo.

  • Rewrite the RBAC demo, use the annotations to define the permission checking pointcuts and their parameters.


  • Support the MethodInterceptor of AOP Alliance.