프로그래밍 농장

스프링이란? (Spring Framwork) [ Spring ] 본문

IT 관련 정보

스프링이란? (Spring Framwork) [ Spring ]

Tennessee201 2021. 6. 22.
728x90

 -스프링 프레임워크(Spring Framwork)란 ? 

자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로, 줄여서 스프링이라고 불린다. 

 

-> 애플리케이션 프레임워크 : 특정 계층이나 기술, 업무 분야에 국한되지 않고 애플리케이션의 전 영역을 포괄하는 범용적인 프레임워크를 뜻한다. 애플리케이션 프레임워크는 개발의 전 과정을 빠르고 효율적으로 진행하는데 일차적인 목표를 둔다. 

-> 경량급 프레임워크 : 단순한 웹컨테이너에서도 엔터프라이즈 개발의 고급기술을 대부분 사용할 수 있다. 

-> 엔터프라이즈 개발 용이 : 개발자가 복잡하고 실수하기 쉬운 Low Level에 대한 관심을 줄이고, 비즈니스 로직 개발에 전념할 수 있도록 지원한다. 

-> 오픈소스 : Spring은 오픈소스 기반으로 소스코드가 공개 되어있고, 기능을 추가하거나 수정하는 것이 가능하다. / 국내의 전자정부 프레임워크가 스프링을 기반으로 제작되어 있다. 

 

-스프링 프레임워크의 주요 구성 요소 

 

-> AOP : 관점 지향 프로그래밍

-> IoC / DI : Ioc : 제어의 역전  /  DI : 의존관계주입

-> PSA : Portable Service Abstractions / 쉬운 서비스 추상화 

-> POJO : Plain Old Java Object : 별 다른 뜻이 아닌 단순히 자바 객체를 사용하겠다는 뜻 

 

- POJO의 장점 

  ->객체지향적인 설계를 자유롭게 가능  

  -> 자동화된 테스트에 매우 유리함

  -> 특정 기술과 환경(규약)에 종속되지 않은 깔끔한 코드작성가능 

 

- AOP(Aspect-Oriented Programming)의 특징

  ->기능의 관심사를 종단 관심사와 횡단 관심사로 구분하여, 프로그래머는 핵심 관심에만 집중하고, 횡단 관심사는 시스템( spring 프레임워크 ) 에서 담당하게 하는것  [ 개발자는 핵심기능 에 집중하도록 함 ]

 

- IoC (Inversion of Control) : 제어의 역전

 -> 프로그램의 흐름을 개발자가 아닌 프레임워크가 주도한다는 의미로, 스프링 컨테이너가 프로그램의 흐름을 제어한다는 의미 

 -> 개발자가 아닌, 스프링 컨테이너가 객체에 대한 생명주기에 대한 컨트롤을 진행함으로써, DI, AOP 등이 가능해짐

 

- DI(Dependency Injection) : 의존성 주입

 -> 객체간의 의존성을 자신의 내부 코드가 아닌, 외부의 주입으로 가능하게 하는 것으로, 외부의 설정파일 등을 통해 정의함 

 ->의존관계 설정이 컴파일시가 아닌, 실행시에 이루어짐 - > 모듈간의 결합도를 낮춤 

-> 코드 재사용율이 높음 -> 소스코드 수정없이 사용이 가능 

 

- PSA (Portable Service Abstraction) : 쉬운 서비스 추상화 

 ->환경의 변화와 관계없이 일관된 방식의 기술로 접근환경을 제공하려는 추상화 구조를 뜻함 

 -> 추상화? : 하위 시스템의 공통점을 뽑아내서 분리시키는 것 

 -> 추상화를 시켜서 좋은점 ?  -> 하위 시스템이 어떤 것인지 알지 못하거나 하위 시스템이 변해도 일관된 방법으로 접근이 가능해짐 (사용방식 등 . . )

 

- Spring의 구동원리

: MVC( Model , View, Controller ) 구조

Dispather Servlet : 클라이언트의 요청에 가장 적절한 Controller에 접근해서 그 View를 출력시켜주는 기능을 함.

 

- Spring 구성도

 

Spring Core : 스프링 프레임워크의 근간이 되는 IoC, DI 를 지원하며, Bean 팩토리를 기반으로 Bean 클래스들에 대한 기능을 제공

Spring AOP : 관점지향적 프로그래밍이 가능

Spring DAO : 조금더 쉽고 일관되게 프로그래밍 가능

Spring ORM : ORM 프레임워크와의 연결, 통합을 쉽게 지원

Spring Context : 추가적인 기능 및 외부 타 라이브러리와의 통합을 지원

Spring Web : 웹 어플리케이션 지원, 타 프레임워크 (웹관련)와의 통합을 지원 

Spring Web MVC : MVC 기능을 지원하기위한 기능 

 

-> ex) JSP : 사용자에게 보여지는 View + 기능을 추가한것 ( Model 1 )

-> Spring : 다양한 UI 기능들을 사용하기위한 API들을 스프링에서 지원 ++

 

728x90