개발자 마다 개발 방식이 다 달라 한사람이 짜논 코드를 다른사람이 유지보수하기 어렵다.
현대 자동차 생산과정을 생각해보자. 설계도가 있고 표준화가 되어 있어 고장이나도 그 표준화 범위 내에서 고장이 남으로 고치기가 비교적 쉬워진다.
이러한 방식과 마찬가지로 스프링프레임워크 줄여서스프링은 개발과정을 표준화 하는 것이다.
--> 코드 재사용성, 유연성이 높아지고 유지보수 하기가 쉬워진다.

의존성 주입(DI) : Dependency Injection으로
제어반전(IOC) :Inversion Of Control로
관점 지향 프로그래밍(AOP) :
스프링 프레임워크에서는 각 클래스들의 연관 관계를 클래스들 사이에서 맺는 것이 아니라 스프링 프레임워크에서 설정(XML) 을 통해 맺어줌으로써 클래스들이 연관관계를 갖지 않게 구현했다.
스프링에서 의존성 주입을 구현하려면 XML이나 애너테이션을 이용해 객체를 주입한다.(스프링에서는 객체의 제어를 스프링이 담당한다.이것을 제어의 역전(IOC) 이라고 한다.)