Spring is a lightweight, open-source application framework for Java. It uses dependency injection (DI) and inversion of control (IOC) to decouple application components. Spring's features include AOP, transaction management, JDBC support, and integration with various web frameworks like Struts and MVC. It supports DI through constructor injection and setter injection. Spring applications typically use XML configuration files to wire application components together.