경량의 제어 역행과 관점 지향 컨테이너 프레임 워크
경량
전체 스프링의 크기는 1MB 남짓한 하나의 JAR 파일, 스프링에 의해 발생하는 부하는 무시해도 되는 수준
제어의 역행(IoC; Inversion of Control)
- 애플리케이션의 느슨한 결합을 도모
- 개발자가 코드에서 객체를 생성하는 대신 Spring Framework에서 객체 생성을 관리
👉 개발 단순화, 유지보수 용이
의존성 주입(DI; Dependency Injection)
객체가 다른 객체에 대한 의존성을 직접 관리하는 것이 아닌,
Spring Framework에서 객체 간의 관계를 처리하도록 하는 것
관점 지향(AOP; Aspect Oriented Programming)
애플리케이션 전체에서 공통으로 사용되는 기능을 추출하여 중복 제거하고 일관성을 유지하는 것
경량 컨테이너
애플리케이션 객체의 생명주기와 설정을 포함하고 관리하다는 점에서 스프링은 일종의 컨테이너
싱글톤 패턴
객체의 인스턴스가 오직 하나만 생성되기 때문에 동일한 객체를 반복해서 사용 가능
필요한 기능을 모듈로 제공하고 있기 때문에 필요한 모듈을 가져다 사용하면 좋다
Spring Framework에서는 POJO를 이용하여 IoC를 구현하고,
Hibernate에서는 POJO를 이용하여 ORM(Object-Relational Mapping)을 구현