객체의 생성부터 생명주기의 관리까지 프레임워크가 주도하고 있음.
🍿 (객체를 생성 호출 X => 만들어둔 자원을 호출해서 사용O)
설정파일 혹은 어노테이션을 통해 객체간 의존관계를 설정해서 개발자가 직접 의존하는 객체를 생성할 필요 없음.
특정 클래스에 종속되지 않기 때문에 자바 자체의 객체 지향적 설계가 쉬워짐.
🍿 설계 쉬워짐, 코드길이감소, 유지보수성증가, 라이브러리 지원에 용이
트랜잭션, 로깅, 보안등 여러 모듈 여러계층에서 공통으로 필요로 하는 기능의 경우 해당 기능들을 분리해 관리함.
Mybatis나 Hibernate 등의 데이터베이스를 처리하는 영속성 프레임워크와 연결할 수 있는 인터페이스를 제공함.
MVC 디자인 패턴을 통해 Model, View, Controller 사이의 의존 관계를 DI 컨테이너에서 관리해 개발자가 아닌 서버가 객체들을 관리하는 애플리케이션을 구축 할 수 있다.
스프링은 다른 여러 모듈을 사용함에 있어 별도의 추상화 레이어를 제공함. 예를 들어 JPA를 사용할 때에서 Spring JPA를 사용하여 추상화하므로 실제 구현에있어서 Hibernate를 사용하든 EclipseLink를 사용하든 개발자는 이 모듈의 의존 없이 프로그램에 집중할 수 있음.