AspectJ is the industry-standard implementation for Aspect Oriented
Programming whereas Spring implements AOP for some cases. Main differences
between Spring AOP and AspectJ are as follows:
1 Spring AOP is simpler to use than AspectJ because we don’t need to worry about the weaving process.
2 Spring AOP supports AspectJ annotations, so if you are familiar with AspectJ then working with Spring AOP is easier.
3 Spring AOP supports only proxy-based AOP, so it can be applied only to method execution join points. AspectJ support all kinds of pointcuts.
4 One of the shortcoming of Spring AOP is that it can be applied only to the beans created through Spring Context.