Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

forest_moon

스프링(Spring) 의 기초 와 원리 본문

이것저것

스프링(Spring) 의 기초 와 원리

rokga 2022. 10. 6. 14:53

스프링이란?  스프링 프레임워크는 자바 진영의 웹 프레임워크이다.

 

스프링 프레임워크가 등장하기 전에는 EJB라는 기술을 통해 웹 애플리케이션을 개발 하였고,

개발자들에게 있어서 이 기술은 여러 가지 복잡성으로 인해 사용하기 꽤나 까다로웠습니다.

당연히 이러한 단점을 보완하기 위한 기술을 개발자들이 만들어내기 시작했고, 그 과정에서 가장 호평을 받은 기술이 바로 스프링입니다.

 

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

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

 

(1) 애플리케이션 프레임워크

 

일반적으로 라이브러리나 프레임워크는 특정 업무 분야나 한 가지 기술에 특화된 목표를 가지고 만들어집니다. 예를 들면 웹 계층을 MVC 구조로 손쉽게 만들 수 있게 한다거나, 포맷과 출력장치를 유연하게 변경할 수 있는 애플리케이션 로그 기능을 제공하는 것이 있죠. 그래서 프레임워크는 애플리케이션의 특정 계층에서 주로 동작하는 한가지 기술 분야에 집중됩니다.

이와 달리, 애플리케이션 프레임워크는 특정 계층이나, 기술, 업무 분야에 국한되지 않고 애츨리케이션의 전 영역을 포괄하는 범용적인 프레임워크를 말합니다. 즉, 애플리케이션 프레임워크는 애플리케이션 개발의 전 과정을 빠르고 편리하며 효율적으로 진행하는데 일차적인 목표를 두는 프레임워크입니다.

 

(2) 오픈소스 경량급

 

여기서 경량급은 기존의 EJB처럼 툴의 도움 없이는 다루기 힘든 난해한 설정파일 구조와 까다로운 패키징, 불편한 서버 배치 등으로 인한 부담을 없애고, 쉽게 해당 기능들을 사용할 수 있게 되었음을 의미합니다. 오픈 소스는 다들 잘 아시다시피 소스가 공개되어 있어서, 언제든 수정이 가능하고, 이슈를 제기하여 해결할 수 있는 소스를 말합니다.

 

스프링 프레임워크의 특징

스프링 프레임워크의 5가지 특징 

 

(1) 경량 컨테이너

경량 컨테이너로서 자바 객체를 직접 관리합니다. 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있습니다.

 

(2) POJO 기반의 구성

POJO는 Plain Old Java Object로, 평범한 자바 객체를 말합니다. 이 단어는 마틴 파울러가 2000년에 컨퍼런스 발표를 준비하다가 만들어낸 용어인데, 단순히 발표 중의 "간단한 자바 오브젝트를 사용하는데요~"라고 하는 것보다 "POJO 방식의 기술을 사용하는데요~"라고 하면 왠지 세련되고 첨단 기술을 쓰는 것처럼 느껴진다는 심리를 이용하여 만들어진 것이라고 합니다. 그래서 우리가 자바에서 개발하는 지극히 평범한 객체를 POJO라고 합니다.

 

다만, POJO는 특정 규약과 특정 환경에 종속되어서는 안 되고 객체지향 설계를 잘 지켜야한다는 조건이 있습니다. 이 부분을 자세히 설명하면 과도하게 포스팅이 길어지므로 추후 하나의 포스팅으로 작성하겠습니다.

 

(3) DI를 통한 객체 간의 관계 구성

스프링은 그 자체가 구조를 설계할 수 있어서 개발자가 부품을 만들어 조립하는 형태의 개발이 가능합니다. 이렇게 조립된 코드의 최종 호출은 개발자가 결정하는 것이 아니라 스프링 프레임워크 내부에서 이루어지는데, 이것을 제어의 역행(IoC)라고 합니다.

 

의존성 주입(DI)은 제어의 역행이 일어나는 것을 전제로 하여 스프링 내부의 객체들간의 관계를 만들어줄 때 사용합니다. 의존성 주입은 말 그대로 특정 객체가 필요로 하는 객체를 외부에서 결정하여 연결시키는 것을 말합니다.

 

IoC와 DI도 여기서 다 설명하면 길어지므로 추후 포스팅으로 작성하겠습니다.

 

(4) AOP 지원

AOP(Aspect Oriented Programming)는 관점 지향 프로그래밍을 뜻합니다. 대부분의 시스템에서 비즈니스 로직은 아니지만 보안, 로그, 트랜잭션과 같이 반드시 처리가 필요한 부분을 횡단 관심사라고 합니다. 스프링에서는 이러한 관심사를 비즈니스 로직과 분리하여 중복된 코드를 줄이고 개발자가 비즈니스 로직에 집중하도록 만들어 줍니다.

 

마찬가지로 AOP 자체도 내용이 방대하므로 따로 포스팅하겠습니다.

 

(5) WAS에 독립적인 개발 환경

과거의 EJB가 동작하려면 고가의 느리고 무거운 자바 서버(WAS)가 필요했습니다. 그에 반해 스프링은 가장 단순한 서버환경인 톰캣(Tomcat)이나 제티(Jetty)에서도 완벽하게 동작합니다. 단순한 개발툴과 기본적인 개발환경으로도 엔터프라이즈 개발에서 필요로 하는 주요한 기능을 갖춘 애플리케이션을 개발하기에 충분한 것이죠.

 

이 외에도 트랜잭션 관리, API와의 영속성을 지원(JDBC, JPA, ...) 등을 한다는 특징이 있습니다.

 

 

 

 

 

 

 

 

 

출처 https://steady-coding.tistory.com/457

'이것저것' 카테고리의 다른 글

MyBatis 란?  (1) 2022.12.20
DB-PostgreSQL ?  (0) 2022.12.13
Jmeter 기본세팅 및 사용법(mac)  (0) 2022.10.05
AWS EC2 SWAP메모리 생성  (0) 2022.09.17
Git actions+codedeploy(CICD)  (0) 2022.09.01