Spring AOP capabilities and goals:- There are some AOP
capabilities as follows-
1 Spring AOP is implemented in pure Java. There is no need for a special
compilation process. Spring AOP does not need to control the class loader
hierarchy, and is thus suitable for use in a Servlet container or application
server.
2 Spring AOP currently supports only method execution join points (advising the
execution of methods on Spring beans). Field interception is not implemented,
although support for field interception could be added without breaking the core
Spring AOP APIs. If you need to advise field access and update join points,
consider a language such as AspectJ.
3 Spring AOP’s approach to AOP differs from that of most other AOP frameworks.
The aim is not to provide the most complete AOP implementation (although Spring
AOP is quite capable); it is rather to provide a close integration between AOP
implementation and Spring IoC to help solve common problems in enterprise
applications.
4 Spring Framework’s AOP functionality is normally used in conjunction with the
Spring IoC container. Aspects are configured using normal bean definition syntax
(although this allows powerful "autoproxying" capabilities): this is a crucial
difference from other AOP implementations. There are some things you cannot do
easily or efficiently with Spring AOP, such as advise very fine-grained objects
(such as domain objects typically): AspectJ is the best choice in such cases.
However, our experience is that Spring AOP provides an excellent solution to
most problems in enterprise Java applications that are amenable to AOP.
5 Spring AOP will never strive to compete with AspectJ to provide a
comprehensive AOP solution. We believe that both proxy-based frameworks like
Spring AOP and full-blown frameworks such as AspectJ are valuable, and that they
are complementary, rather than in competition. Spring seamlessly integrates
Spring AOP and IoC with AspectJ, to enable all uses of AOP to be catered for
within a consistent Spring-based application architecture. This integration does
not affect the Spring AOP API or the AOP Alliance API: Spring AOP remains
backward-compatible.