Release notes


  • Change the XML configuration format, it is more clear now. 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, and eagerly instantiate the aspects of JVM and class scope. Current overhead (Celeron 2G, 256M SDRAM, Win2000): Directly invoke: 4.7E-6 ms, Single interceptor: 3.68E-4 ms, Single decorator: 8.086E-4 ms, Single abstract interceptor: 4.4295E-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 some more overhead.)

  • Intergrate with the XML configuration module of NanoContainer, see demos.

  • 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.