- Spring이란 JAVA 기술들을 더 쉽게 사용할 수 있게 해주는 오픈소스 프레임 워크
- Spring 의 특징
- 컨테이너 역활을 함으로써 자바 객체를 직접 관리합니다.
- Sprin 컨테이너는 Java 객체의 LifeCycle을 관리하여, Spring 컨테이너로부터 필요한 객체를 가져와 사용할 수 있습니다.
- DI(Dependency Injection) 의 약자로 의존성 주입을 의미합니다. 객체간의 의존관계를 미리 설정해두면 스프링 컨테이너가 의존관계를 자동으로 연결해줍니다. 이렇게 되면 직접 의존하는 객체를 생성하거나 검색해서 가져올 필요없어서 결합도가 낮아지는 장점이 있습니다.
- AOP(Aspect Oriented Programmgin) 지원(관점지향 프로그래밍)
- Spring은 트랜잭션이나 로깅, 보안과 같이 공통적으로 필요로 하는 모듈들을 실제 핵심 모듈에소 분리해서 적용할 수 있습니다.
- POJO(Plain Old Java Object) 지원
- Spring 컨테이너에 저장되는 Java객체는 특정한 인터페이스를 구현하거나, 특정 클래스를 상속받지 않아도 됩니다.
- 트랜잭션 처리를 위한 일관된 방법을 지원 ( 데이터 처리하는 하나의 작은 단위)
- JDBC, JTA 등 어떤 트랜잭션을 사용하던 설정을 통해 정보를 관리하므로 트랜잭션 구현에 상관없이 동일한 코드 사용가능
- 영속성과 관련된 다양한 API 지원
- Spring은 Mybatis, Hibernate 등 데이터베이스 처리를 위한 ORM(Object Relational Mapping) 프레임워크들과의 연동을 지원합니다.
- Spring 동작 순서
- Client 요청 → DispatcherServlet → HandlerMapping → Controller → service → DAO → DB → DAO → Service → Controller → DispatcherServlet → viewResolver → view → 응답