Spring is a Java application framework that targets web and enterprise applications. It uses inversion of control (IOC), also known as dependency injection (DI), to configure application components. Spring provides modular frameworks for JDBC, Hibernate, JPA, Struts, Tapestry, batch processing, timed events, JMS, JNDI, and LDAP. The core capabilities of Spring include IOC/DI, which configures components from outside-in rather than constructor calling. DI/IOC can be used through POJO setters, constructors, or service lookup. Spring uses a BeanFactory to create beans as singletons or instances and allows auto-wiring by name. Aspects in Spring supplement existing methods dynamically