스프링 프레임워크(영어: Spring Framework)는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 한다.
동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있다.
1. Spring의 특징
- 경량 컨테이너로서 자바 객체를 직접 관리한다. 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.
- 스프링은 제어 반전(IoC : Inversion of Control)을 지원한다. 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다.
- 스프링은 의존성 주입(DI : Dependency Injection)을 지원한다. 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.
- 스프링은 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)을 지원한다. 따라서 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.
- 스프링은 확장성이 높다. 스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용이 가능하기 때문에 수많은 라이브러리가 이미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이하다.
2. Spring의 구조
Spring Core
Spring Core는 Spring Container을 의미한다. core라는 말 그대로 Container는 Spring Framework의 핵심이며 그중 핵심은 Bean Factory Container인데, 그 이유는 바로 Bean Factory는 IOC패턴을 적용하여 객체 구성 부터 의존성 처리까지 모든 일을 처리하는 역할을 하고 있기 때문이다.
Spring Context
Spring context는 Spring Framework의 context 정보들을 제공하는 설정 파일이다. Spring Context에는 JNDI, EJB, Validation, Scheduiling, Internaliztaion 등 엔터프라이즈 서비스들을 포함하고 있다.
Spring AOP
Spring AOP module은 Spring Framework에서 관점지향 프로그래밍을 할 수 있고 AOP를 적용 할수 있게 도와주는 Module이다.
Spring DAO
DAO란 Data Access Object의 약자로 Database Data에 접근하는 객체이다. Spring JDBC DAO는 추상 레이어를 지원함으로써 코딩이나 예외처리 하는 부분을 간편화 시켜 일관된 방법으로 코드를 짤 수 있게 도와준다.
Spring ORM
ORM이란 Object relational mapping의 약자로 간단하게 객체와의 관계 설정을 하는 것이다. Spring에서는 Ibatis, Hibernate, JDO 등 인기있는 객체 관계형 도구(OR도구)를 사용 할 수 있도록 지원한다
Spring Web
Spring에서 Web context module은 Application module에 내장되어 있고 Web기반의 응용프로그램에 대한 Context를 제공하여 일반적인 Web Application 개발에 필요한 기본적인 기능을 지원한다.
Spring MVC
Spring에서는 MVC에서는 Model2 구조로 Apllication을 만들 수 있도록 지원한다. MVC (Model-View-Controller) 프레임 워크는 웹 응용 프로그램을 작성하기위한 완전한 기능을 갖춘 MVC패턴을 구현한다. MVC 프레임 워크는 전략 인터페이스를 통해 고급 구성 가능하며 JSP, Velocity, Tiles, iText 및 POI를 포함한 수많은 뷰 기술을 지원하고 있습니다.
3. Spring의 구동순서
(출처 - https://yoo-hyeok.tistory.com/139)
Spring 실행순서
1. 웹 어플리케이션이 실행되면 Tomcat(WAS)에 의해 web.xml이 로딩.
2. web.xml 에 등록되어있는 ContextLoaderListener 생성.
: ContextLoaderListener는 ServletContextListener 인터페이스를 구현하고있으며, ApplicationContext를 생성한다.
(* ApplicationContext : IoC 엔진이며, 빈의 생명주기를 담당한다. )
3. ContextLoaderListener 가 root-context.xml 을 로딩.
(* ContextLoaderListener : 서블릿을 초기화하는 용도로 사용)
4. root-context.xml 등록되어 있는 설정에 따라 Spring Container(ROOT)가 구동.
5. 클라이언트로부터 Web Application에 요청.
6. DispatcherServlet 생성.
7. DispatcherServlet 이 servlet-context.xml 을 로딩.
8. 두번째 Spring Container 구동되며, 응답에 맞는 PageController들이 동작한다.
4. Spring Project 동작 순서 (MVC2)
(출처 - http://server-engineer.tistory.com/253)
1. 클라이언트가 Request 요청을 하면 DispatcherServlet이 요청을 가로챈다.
2. DispatcherServlet이 가로챈 요청을 HandlerMapping에게 보내 해당 요청을 처리할 수 있는 Controller를 찾는다.
3. 실제 로직 처리 (Controller -> Service -> DAO -> DB -> DAO -> Service -> Controller)
4. 로직 처리 후 ViewResolver를 통해 view 화면을 찾는다.
5. View화면을 최종 클라이언트에게 전송.
'개발지식 > BE(Back-End)' 카테고리의 다른 글
RestAPI란? (0) | 2023.04.02 |
---|---|
Spring Framework - Handler란? (0) | 2023.04.01 |
Spring Framework - Repository의 역할 (0) | 2023.04.01 |
Spring Framework - Controller와 RestController의 차이 (0) | 2023.04.01 |
Spring Framework - JPA Entity란? (0) | 2023.03.31 |