프레임워크/스프링(Spring)

스프링 프레임워크(Spring framework) 기본

superminy 2021. 1. 22. 15:29
728x90

 

서버개발자라면 한번쯤은 들어보고 사용해봤을 스프링 프레임워크사용은 하고 있지만 누가 물어보거나 면접에 가면 막상 개념을 대답하기 어려워 정리해 봤습니다.

 

 

Spring Framework란?

- 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크

- 자바 엔터프라이즈 개발을 편하게 해주는 오픈 소스 경량급 애플리케이션 프레임워크

- 자바 개발을 위한 프레임워크로 종속 객체를 생성해주고, 조립해주는 도구

- 자바로 된 프레임워크로 자바SE로 된 자바 객체(POJO)를 자바EE에 의존적이지 않게 연결해주는 역할

- 관점지향 프로그래밍(AOP)을 위한 풍부한 지원

- 애플리케이션 객체의 생명 주기와 설정을 포함하고 관리한다는 점에서 일종의 컨테이너(Container)라고 할 수 있음

- 간단한 컴포넌트로 복잡한 애플리케이션을 구성하고 설정할 수 있음



Spring Framework의 특징

 

1. 경량 컨테이너로서 자바 객체를 직접 관리

- 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있음

 

2. 스프링은 POJO(Plain Old Java Object) 방식의 프레임워크

- 일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에

   존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가벼움

 

3. 스프링은 제어의 역행(IoC : Inversion of Control)을 지원

- 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출

 

4. 스프링은 의존성 주입(DI : Dependency Injection)을 지원

- 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결

 

5. 스프링은 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)을 지원

- 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리

 

6. 스프링은 영속성(dao, 영속객체, persistence)과 관련된 다양한 서비스를 지원

- 객체관계매핑(ORM – Object Relational mapping) DB와 객체지향프로그래밍 언어간의 호환되지 않는 데이터를 변환    하는 프로그래밍 기법

- iBatis나 Hibernate 등 이미 완성도가 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공

 

7. 스프링은 확장성이 높음

- 스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용이 가능하기 때문에    수많은 라이브러리가 이미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기가 용이

 

 

스프링 MVC 웹 요청 처리과정

1. 클라이언트가 서버에 요청을 하면 DispatcherServlet 클래스가 요청을 가로챔

 

2. 가로 챈 DispatcherServlet 매핑값을 찾아 Controller에 요청을 처리할 메소드에 도달

 

3. Controller에서 해당 요청을 처리할 서비스에서 보내 DB에 접근이 필요하면 DAO에게 위임

 

4. DAO는 마이바티스와 같은 라이브러리 설정을 이용하여 SQL 쿼리를 날려 DB에 저장된 정보를 VO에 받아 서비스로       돌려줌

 

5. 모든 로직을 끝낸 서비스는 컨트롤러에 넘기고 Controller는 Model 객체에 결과물을 어떤 view로 보여줄 것인지 정       보를 담아 디스패처서블릿에게 보냄

 

6. DispatcherServlet은 응답할 View를 찾고 View는 응답로직을 처리한다.

 

7. DispatcherServlet이 클라이언트에게 렌더링된 View를 응답한다.

 

728x90
반응형

'프레임워크 > 스프링(Spring)' 카테고리의 다른 글

스프링 프레임워크의 기본  (0) 2021.02.17