In the AOP approach, a system uses a pattern of development called Dependency Injection.
Dependency Injection is to take method on an interface, such as fetch or save, and to inject a handler
that does additional processing either before, after or instead of the standard call. For instance, to add a
read lock on a content object, we could make a lock call before a fetch and an unlock call after a save
or release call.
The calling application should not be aware whether a read lock has been added or not,
so the dependency injection should be automatic and not require any additional programming.
The Spring Framework provides us with the ability to wire in these automatic behaviors as a configuration
exercise rather than add code at all the places we need to use it. Transaction control is an example of a
capability that can be added in without programming and providing us with robust control of content.
In addition, we use a number of essential services by merely configuring the service aspects in, such as:
transactions, n-tier partitioning, caching, web service calls, authentication, and service call