Dependency Injection (DI) → decouples the application objects from each other
Construction and method level injection
Inversion of Control (IoC) container manages creating objects → decoupling objects management from the application
Aspect Oriented Programming (AOP) → decouple cross-cutting concerns from the objects that they affect
Examples of aspects: logging, declarative transactions, security, caching, etc.
Spring framework offers about 20 modules.
We can pick and choose only the modules that are needed without having to bring in the rest.
The Core module provides the fundamental parts of the framework, including the IoC and Dependency Injection features.
The Bean module provides BeanFactory, which is a sophisticated implementation of the factory pattern.
The Context module builds on the solid base provided by the Core and Beans modules and it is a medium to access any objects defined and configured. The ApplicationContext interface is the focal point of the Context module.
The SpEL module provides a powerful expression language for querying and manipulating an object graph at runtime.