Notice
Recent Posts
Recent Comments
«   2024/10   »
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 31
10-11 00:15
Archives
Today
Total
관리 메뉴

Developer_Neo

[Spring] Spring Framework(스프링 부트, 스프링, 프레임워크와 라이브러리 차이점, POJO) 본문

Spring

[Spring] Spring Framework(스프링 부트, 스프링, 프레임워크와 라이브러리 차이점, POJO)

_Neo_ 2022. 8. 10. 11:43
반응형

Framework Vs Libarary

공통점 : 다른 누군가가 쓴 코드로써 우리가 가져다가 쓰는 것들이다.

차이점 : 
누가 누구를 컨트롤 하는가인 제어권이다.
차이점에 대해 더 자세히 들어가면,
1. 자신이 모든 결정권을 가지고 있는 상태로 코드를 컨트롤 하는가?
2. 누군가 정해준 규칙에 따라 하는지?
(Framework는 나의 코드를 가져간다.)

로 나눌 수 있다.

2022.08.03 - [Spring] - [Spring 입문] - 회원 관리 예제를 만들어 보자

 

[Spring 입문] - 회원 관리 예제를 만들어 보자

1. 비즈니스 요구사항을 정리 2. 회원 도메인 객체를 저장하고 불러올 수 있는 리포지토리 객체인 저장소 객체를 만들자 3. 회원 리포지토리가 정상 동작하는지 테스트 케이스 작성 4. 실제 비즈

devloper-dreaming.tistory.com

위의 글을 본다면, 스프링에 대해 다루어졌다.

Spring 입문에 대한 발행글들을 보게 되면,
Framework인 Spring을 사용한 것을 알 수 있다.
이때 정해진 규칙에 따라 작성하였다.
즉, Spring으로 코드를 작성할 때 컨트롤러, Model, View라는 3가지 구조로 나누어 우리가 작성해야했다
그리고 우리가 Repository와 controller, Domain에 해당하는 내용을 적게 된다면, Spring이 알아서 어노테이션에 따라 스프링 컨테이너라는 곳에 빈으로 등록하고, 서로 연결해주면서 관리 해준다. (이것이 IOC인 의존 관계 역전이라고 할 수 있다. 우리가 관리하는 것이 아닌 Framework가 관리 해주니.)
우리가 어떻게 Model을 이용하고, view를 이용하고, Controller를 이용하라는 코드를 작성한 적은 없다.
하지만, 정해진 규칙에 따라 작성하지 않는다면, 코드들이 동작하지 않을 것이다.
따라서 Spring은 Spring자체 규칙에 따라서 우리가 코드를 작성하는 것과, 우리가 작성한 코드를 이용하는 것 2가지를 볼 때 FrameWork라고 할 수 있다.

 


스프링이라는 단어는 문맥에 따라 스프링 DI 컨테이너 기술, 스프링 프레임워크, 스프링 부트, 스프링 프레임워크 등을 모두 포함한 생태계를 뜻하게 된다

Spring이란?

spring framework 하나가 아닌 여러 기술들(EX) 스프링 프레임워크, 스프링 부트, 스프링 데이터, 스프링 세션, 스프링 시큐리티 등......)의 모음이다.
이 중에서 핵심은 Spring 프레임워크와 스프링 부트이다.

가장 잘 알려진 정의는 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 애플리케이션 프레임워크 라고 합니다.


Spring Framework란?

간단하게 부르면 Spring이라고 부릅니다. 이래서 Spring이라고 한다면, Spring Framework를 떠올리기 쉽습니다.
핵심 기술인 DI, IOC, POJO, AOP등에 기반하여 스프링 MVC, 트랜잭션 기능들이 파생이 된 것이다.

컨테이너를 가지고 있어 이곳에 자바 객체를 생성, 소멸, 라이프 사이클들을 직접 관리하는 자바 플랫폼을 위한 오픈소스 애플리케이션 Framework이다.

핵심적인 것은 객체 지향 언어라는 강력한 특징을 살려내는 것으로 좋은 객체 지향 어플리케이션을 개발 할 수 있게 도와주는 프레임 워크다.

Spring Boot란?

스프링 프레임워크 기반으로 프로젝트를 적을 시에 XML 설정파일들을 작성해야합니다. 이 XML을 적을 때 사용해야할 라이브러리 버전 별로 개발자가 직접 관리를 해주어야했는데 매우 번거로웠습니다.
또, 사용할 웹 서버를 따로 설치하고 빌드해주어야했습니다.

하지만 Spring Boot는 XML기반이 아닌 Gradle을 통해 스프링 버전 관리를 자동으로 해줌으로써 개발자는 기능 구현에만 집중 할 수 있게 만들어준 스프링내의 프로젝트이자 오픈소스 입니다.

특징
1. Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 된다.
2.  starter 종속성 제공 (여러 라이브러리를 자동으로 챙겨줌.)
- 스타터(Starter) 모듈을 통해 설치되는 의존 라이브러리를 기반으로 애플리케이션의 설정을 자동으로 구성
3. 외부 라이브러리 자동 구성 (버전 관리..?)

 


Spring 삼각형

POJO

Java로 생성하는 순수한 객체 라는 의미
Spring Framework는 POJO프로그래밍을 지향하기 위해 IOC/DI, AOP, PSA 기술을 지원한다.

배경

스프링 이전시기에는, EJB가 자바를 사용한 기업 소프트웨어 개발을 해왔었다. 하지만 이 EJB는 문제점이 많았다. 대표적인 문제로는 어렵고, 복잡하고, 느리며, EJB에 의존적으로 개발해야 했었다.

그래서 마틴 파울러는 EJB처럼 복잡하고 제한이 많은 기술을 사용하는 것 보다 자바의 단순한 오브젝트를 이용해 애플리케이션의 비즈니스 로직을 구현하는 것인 POJO를 사용하자고 하였다.

 

조건

POJO의 조건
1. 특정 규약에 종속되지 않는다.
     - 자바 언어나 자바 API인 Java의 스펙에 정의된 것 이외에는 종속되지 않는다.

2. 특정 환경에 종속되지 않는다.
     -  만약 서블릿 컨테이너로 아파치 톰캣을 사용하고 있었는데, Zetty에 해당하는 다른 서블릿 컨테이너로 바꿀 경우
        기존에 사용하던 톰캣관련 API들을 Zetty API로 변경하는 것은 특정 환경에 종속적인 것이다.

 

필요한 이유

특정 환경이나 기술에 종속적이지 않으면 재사용 가능, 확장 가능한 유연한 코드를 작성할 수 있다
저수준 레벨의 기술과 환경에 종속적인 코드를 애플리케이션 코드에서 제거 함으로써 코드가 깔끔해진다. 이에 디버깅하기도 쉽다.
특정 기술, 환경에 종속적이지 않아 테스트가 단순해진다.

 

 

 

 

 

반응형

'Spring' 카테고리의 다른 글

[Spring] - IOC/DI, AOP, PSA란?  (0) 2022.08.12
[Spring] - SOLID란?  (0) 2022.08.11
[Spring 입문] - AOP  (0) 2022.08.06
[Spring 입문] - 스프링 데이터 JPA  (0) 2022.08.06
[Spring 입문] - JPA  (0) 2022.08.05
Comments