Programming/Spring

Spring 의 개요

긍정왕웹서퍼 2021. 10. 8. 01:43
728x90

스프링의 개요

Java 언어를 사용하면 꼭 사용하게 되는 대세 프레임워크인 스프링 !

어째서 많은 프레임워크 중 스프링을 사용하는지, 스프링이란 무엇인지 핵심개념부터 살펴보자

 

 

 

Spring Framework 란?

자바 오픈소스 애플리케이션 프레임워크로 간단하게 Spring 이라 불린다.

동적인 웹 사이트를 개발하기 위한 여러가지 서비스를 제공하고 있으며, 공공기관의 웹 개발 시

사용을 권장하고 있는 전자정부 표준 프레임워크의 기반 기술로서 쓰인다.

가장 큰 특징은 의존성주입 (DI, Dependency Injection) 과 제어 반전(IOC, Inversion of Control)

이 있으며 그 외에도 Spring AOP, POJO  등이 존재한다. 

이 특징들을 이용해 결합도를 낮추는 방식으로 어플리케이션을 안정적인 프로그램으로 개발이 가능하며

이러한 개발방식은 프로그램의 단위테스트에 용이하기 때문에 보다 퀄리티높은 프로그램을 개발할 수 있다.

 

 

Spring 핵심 기능과 특징

DI, Dipendency Injection (의존성 주입) 설정파일이나 어노테이션을 통해 객체간의 의존관계를 설정하여
개발자가 직접 의존하는 객체를 생성할 필요가 없다.
AOP, Aspect Oriented Programming (관점지향 프로그래밍) 트랜잭션, 로깅, 보안 등 여러 모듈, 여러 계층에서 공통으로 필요로
하는 기능의 경우 해당 기능들을 분리하여 관리한다. 
POJO, Plain Old Java Object 일반적인 J2EE 프레임워크에 비해 특정 라이브러리를 사용할 필요가 없어 개발이 쉬우며, 기존 라이브러리의 지원이 용이하다. 
IOC, Inversion of Control (제어 반전)  컨트롤의 제어권이 개발자가 아닌 프레임워크에 있다는 뜻으로 
객체의 생성부터 모든 생명주기의 관리까지 프레임워크가 주도한다.
객체를 생성하고, 직접 호출하는 프로그램이 아니라, 만들어둔 자원을 호출해서 사용한다. 
Spring JDBC Mybatis 나 Hibernate 등 데이터베이스를 처리하는
영속성 프레임워크와 연결할 수 있는 인터페이스를 제공한다. 
Spring MVC MVC 디자인 패턴을 통해 웹 어플리케이션의 Model, View, Controller 사이의 의존관계를 DI 컨테이너에서 관리하여 개발자가 아닌 서버가 객체들을 관리하는 웹 애플리케이션을 구축할 수 있다.
PSA, Portable Service Abstraction 스프링은 다른 여러모듈을 사용함에 있어 별도의 추상화 레이어를 제공한다. 예를 들어 JPA 를 사용할때에서 Spring JPA를 사용하여 추상화하므로 실제구현에 있어서 Hibernate 를 사용하든 EcliposeLink를 사용하든 개발자는 이 모듈의 의존없이 프로그램에 집중할 수 있다.

 

 

 

Spring 구성 모듈

 

- Data 접근 계층 : JDBC 나 데이터베이스에 연결하는 모듈로, Data 트랜잭션에 해당하는 기능을 담당하여 영속성 프레임워크의 연결을 담당한다. 

- Web 계층 (MVC/ Remoting) : Spring Framework 에서 Servlet, Struts 등의 웹 구현 기술과의 연결점을 Spring MVC 구성으로 지원하기 위해 제공되는 모듈 계층이다. 또한 스프링의 리모팅 기술로 RMI, Hessian, Burlap, JAX-WS, HTTP 호출자 그리고 REST API 모듈을 제공한다. 

-AOP 계층 : Spring 의 핵심이라고 할 수 있으며 모든스프링 관련 모듈은 이 Core Container 기반으로 구축된다.
Spring의 근간이 되는 IOC 또는 DI 기능을 지원하는 영역을 담당하고 있다. BeanFactory를 기반으로 Bean 클래스들을 제어할 수 있는 기능을 지원한다. 

 

 

 

Spring 동작 구조

 

 

 

 

Spring 동작 방식 

  • XML 파일 : Spring 컨테이너 구동 시 한개의 Spring 환경설정된 xml파일을 불러오는데 이 파일에 bean, aop, transaction 등
    여러 사항을 다 작성하여 구동하는 방식
  • @Annotation : xml 파일에는 구송시킬 필수요소만 작성하고 소스코드에 Annotation 으로 표시하여 구동하는 방식 

 

 

Spring MVC

Spring Framework 에서는 클라이언트의 화면을 표현하기 위한 View 와 서비스를 수행하기 위한 개발로직 부분을 나누는 MVC2 패턴을 지원한다. 또한 Model, View, Controller 사이의 의존관계를 DI컨테이너에서 관리하여 유연한 웹 애플리케이션을 쉽게 구현 및 개발할 수 있다.

 

MVC 요청 처리 과정 

MVC 요청 처리 과정 

MVC 구성요소 

DispatcherServlet 클라이언트의 요청(Request)을 전달 받고 요청에 맞는 컨트롤러가 리턴 한 결과를 View에 전달하여 알맞은 응답(Response)을 생성
HandlerMapping 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지 결정
Controller 클라이언트의 요청을 처리한 뒤, 결과를 DispatcherServlet 에게 리턴
ModelAndView 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담음
ViewResolver 컨트롤러의 처리결과를 생성할 View를 결정
View 컨트롤러의 처리결과 화면을 생성, JSP 나 Velocity 템플릿 파일등을 View로 사용