프레임워크 vs 라이브러리, 스프링

oYJo·2025년 3월 12일

Spring

목록 보기
1/29


Framework

1️⃣ Framework vs Library

Framework 란 ??

  • 개발자가 소프트웨어를 개발함에 있어 코드를 구현하는 개발 시간을 줄이고, 코드의 재사용성을 증가 시키기 위해 일련의 클래스 묶음이나 뼈대, 틀을 라이브러리 형태로 제공되는 것을 말한다.
  • 제어의 역전 개념이 적용된 대표적인 기술이다.

프레임워크 : 재료까지 준비된 밀키트 느낌

Library 란 ??

  • 라이브러리란 개발자가 만든 클래스들의 나열로, 다른 프로그램들에서 사용할 수 있도록 제공하는 방식
    이다.

라이브러리는 : 재료는 내가 준비해야 하는 레시피 느낌
제어의 역전개념이 적용된 대표적인 기술 : 객체를 따로 만들어주지 않음
→ 개발자가 신경쓸 게 많이 없어진다
servlet, jdbc 등으로 여러 단계로 왔다갔다 한 게 많이 없어짐

라이브러리가 많이 뭉치면 프레임워크 느낌도 나옴
A 라이브러리 + B 라이브러리 이거 2개 잘 연결하면 괜찮겠는데? 프레임워크가 되기도 함

라이브러리와 프레임워크의 차이는 제어 흐름에 대한 주도성이 누구에게 / 어디에게 있는가에 있다.
즉, 애플리케이션의 Flow(흐름)을 누가 쥐고 있느냐에 달려있다.

  1. 개발자가 따라야 하는 가이드를 제공한다
  2. 개발할 수 있는 범위가 정해져 있다
  3. 개발자를 위한 다양한 도구, 플러그인들을 지원한다

💡 프레임워크(ex. 스프링)는 범위가 정해져 있음
→ 스프링의 경우, 자바에 국한되어 있음


2️⃣ Framework

Framework의 특징

      1. 개발자가 따라야 하는 가이드를 제공한다.
        개발할 수 있는 범위가 정해져 있다.
        개발자를 위한 다양한 도구, 플러그인들을 지원한다.

Framework의 특징

  • 개발 시간을 줄일 수 있음
  • 정형화 되어 있어 일정수준 이상의 품질을 기대할 수 있음
  • 유지 보수가 쉬움
    장 점
    단 점- 너무 의존하면 개발자들의 능력이 떨어져서 스스로 직접 개발하는 것이 어려워짐
  • 습득에 걸리는 시간이 오래 걸림

Framework의 종류


Spring Framework

1️⃣ Spring Framework 개요

Spring Framework 란 ??

자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로 간단하게 스프링(Spring)이라고도 불린다.
동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있으며 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준 프레임워크(Spring MVC Project 기반 프레임워크)의 기반 기술로서 쓰이고 있다.

동적 웹 사이트를 위한 여러 가지 서비스 제공
MVC 기반으로 사용하고 있다

Spring 공식 사이트

https://spring.io/

Spring Framework 의 특징

특히 IOC, DI, POJO 기반 프레임워크, Spring AOP 중요하다
1. IOC(제어 반전) :
원래는 객체 만들려면 개발자가 객체를 만들었는데
제어반전!! 프레임워크가 직접 관리한다!
개발자가 new로 만들지 않는다!!
프레임워크가 new 객체()로 생성한다
개발자가 객체 만들 때마다 heap 메모리를 사용했는데 → 관리가 어려움


근데 프레임워크는 컴퓨터이니 관리까지 알아서 메모리 관리를 해줌

개발자프레임워크
Objectnew 객체()
InstanceBean

그럼 개발자가 만든 객체랑 프레임워크가 만든 객체를 어떻게 구분?
❗프레임워크 객체 이름을 Bean이라고 부름❗
Object, Instance, Bean 모두 다 객체인데 이름을 다르게 해서 구분해준 것

  1. DI
    개발자
    @(어노테이션)여기로 주입해줘!
    근데 new를 안 쓰잖아!
    @Service service;
    service라는 주소에 넣어줘

    주입 : 프레임워크에 의존해서 주입을 받는다
    = DI(의존성 주입)

    그래서 IOC랑 DI는 서로 짝꿍이다
    치킨 먹고 싶으면 치킨을 만드는게 아니라 배달을 통해 시키는 것처럼 배달주소 적는게 @
  1. POJO 기반 프레임워크
    서블릿을 쓸 때 extends Https를 썼는데 이거는 의존도가 높은 것
    근데 이젠 더이상 이렇게 쓰지 않기에 코드길이 감소, 유지보수성 증가, 기존 Java API, 라이브러리 지원에 용이
  1. Spring AOP
    관점지향프로그래밍
    요청
    Controller
    Service
    DAO
    DB
    이 과정에서 주로 Service에 트랜잭션 개입한다

  1. PSA : 다른 여러 모듈을 사용함에 있어 별도 추상화 레이어를 제공한다
    구체적이지 않다, 모두 다 가능하다

    @ : Controller 어노테이션도 있고, Service 어노테이션 등 굉장히 많다

    스프링에서 쉽게 쓸 수 있게 추상화된 레이어를 제공한다
    다른 모듈들을 알아서 쓸 수 있게 제어해준다

2️⃣ Spring의 구성 모듈

Data 접근 계층

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

Web 계층 (MVC / Remoting)

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

AOP 계층

Spring에서 각 흐름 간 공통된 코드를 한 쪽으로 빼내어 필요한 시점에 해당 코드를 첨부하게 하기 위해 지원하는 계층으로, 별도의 proxy를 두어 동작한다. 이를 통해 객체간의 결합도를 낮출 수 있다.

Core Container

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

Spring 모듈 정리



3️⃣ Spring 동작 구조

Spring 애플리케이션

Spring 웹


4️⃣ Spring MVC

Spring MVC

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

Spring MVC 요청 처리 과정

Handler Mapping, View REsolver, View 가 추가되었지만 기본적인 흐름은 동일하다

💡 Dispatcher Servlet(발송자 서블릿) : 요청을 컨트롤러로 전달 + 응답
중앙처리 느낌인데, 우리가 만들지 않고 spring이 만들어준다

Handler Mapping(매핑 처리) : 어떤 요청을 어떤 클래스/메소드로 연결할 지 제어하는 객체

View Resolver(뷰 해결사) : Controller에서 반환된 문자열(”common/main”)
앞, 뒤에 경로(/WEB-INF/views/), 확장자(.jsp)를 붙여 jsp 파일의 경로를 지정한 후 forward(요청 위임)을 하는 객체

Spring MVC 구성 요소

Spring 프로젝트 폴더 구조

main 폴더

webapp 폴더


profile
Hello! My Name is oYJo

0개의 댓글