스프링(Spring Framework)이란?

Kim Sung Kyu·2021년 5월 7일
0

Spring🌱

목록 보기
1/3
post-thumbnail

스프링(Spring Framework)

  • 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크
  • 엔터프라이즈급 애플리케이션을 개발하기 위한 기능을 종합적으로 제공하는 경량화된 솔루션

엔터프라이즈급이란?
> 대규모 데이터 처리와 트랜잭션이 동시에 여러 사용자로 부터 행해지는 매우 큰 규모의 환경

  • POJO 기반의 Enterprise Application 개발을 쉽고 편하게 할 수 있도록 함

POJO(Plain Old Java Object)란?
> 이전의 자바는 EJB를 거치면서 무겁기도 하고 특정 환경에 종속되는 등 자바다움을 잃어가기 시작
> 상속, 인터페이스가 필요없는, 속성과 기능만 있는 아주 단순하고 가벼운 객체를 의미
> POJO는 gettet/setter를 가진 단순 자바 오브젝트로 정의
> 장점 : 의존성이 없고 추후 테스트 및 유지보수가 편리함

  • Java Application을 개발하는데 필요한 하부구조(Infrastructure)를 포괄적으로 제공
  • Spring이 하부구조를 처리하기 때문에 개발자는 Application 개발에 집중할 수 있음
  • 동적 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공
  • 전자 정부 표준 프레임워크의 기반 기술

스프링(Spring Framework)의 주요 특징

IOC(Inversion of Control)

  • 제어의 역전

일반적인 프로그램에서는..

  • 객체 결정 및 생성 -> 의존성 객체 생성 -> 객채 내의 메소드 호출 -> (반복)
  • 각 객체들이 프로그램의 흐름을 결정하고 각 객체를 구성하는 작업에 직접적으로 참여
  • 즉, 모든 작업을 사용자가 제어하는 구조

반면 IOC는..

  • 모든 권한을 다른 대상에 위임함으로써 제어 권한을 위임받은 특별한 객체에 의해 결정되고 만들어짐
  • 즉, 제어의 흐름을 사용자가 컨트롤 하지 않고 권한을 위임한 특별한 객체에 모든 것을 맡기는 구조
  • IOC의 구성요소 : DI(Dependency Lookup, 의존성 검색), DL
  • DL(Dependency Lookup, 의존성 검색)
    컨테이너에서는 객체들을 관리하기 위해 별도의 저장소에 Bean을 저장하는데 저장소에 저장되어 있는 컨테이너에서 제공하는 API 를 이용하여 사용하고자 하는 Bean을 검색하는 방법

  • DI(Dependency Injection, 의존성 주입)
    의존성 주입이란 객체가 서로 의존하는 관계가 되게 의존성을 주입하는 것
    객체지향 프로그램에서 의존성 이란 하나의 객체가 어떠한 다른 객체를 사용하고 있음을 의미
    각 클래스(POJO 객체들) 사이에 필요로 하는 의존 관계를 Bean 설정 정보를 바탕으로 컨테이너가 자동으로 연결해 주는 것


AOP(Aspect Orientated Programming)

  • 관점 중심 프로그래밍
  • 흩어진 Aspect 를 모듈화 할 수 있는 프로그래밍 기법
  • 여러 곳에서 쓰이는 공통 기능을 모듈화하고, 쓰이는 곳에 필요할 때 연결함으로써, 유지 보수 혹은 재사용에 용이하도록 프로그래밍 하는 것

OOP에서는..

  • 객체지향 원칙에 따라 관심사가 같은 데이터를 한곳에 모아 분리, 낮은 결합도를 갖게 해 독립적이고 유연한 모듈로 캡슐화를 함
  • 이러한 과정 중 중복된 코드들이 많아지고 가독성, 확장성, 유지 보수성을 떨어뜨림

AOP에서는..

  • 핵심기능과 공통기능을 분리시켜 핵심 로직에 영향을 끼치지 않게 공통기능을 끼워 넣는 개발 형태
  • 무분별하게 중복되는 코드를 한 곳에 모아 공통기능을 한 곳에 보관함으로써 공통 기능 하나의 수정으로 모든 핵심기능들의 공통기능을 수정 할 수 있어 효율적인 유지보수 가능 및 재활용성이 극대화

Portable Service Abstraction

이식 가능한 서비스 추상화
완성도가 높은 라이브러리와 연결할 수 있는 인터페이스 제공
다른 프레임워크들과의 통합 지원


MVC(Model2)

Model-View-Controller 구조로 사용자 인터페이스와 비지니스 로직을 분리하여 개발 하는 것
Model1과 Model2로 나누어져 있으며, 일반적인 MVC는 Model2를 지칭


스프링(Spring Framework)의 구조

Spring Core

Spring Core는 Spring Container 의미
Container는 Spring Framework의 핵심이며 그중 핵심은 Bean Factory Container
Bean Factory는 IOC패턴을 적용하여 객체 구성 부터 의존성 처리까지 모든 일을 담당하는 역할

Spring Context

Spring Framework의 Context 정보들을 제공하는 설정 파일
Spring Context는 JNDI, EJB, Validation, Scheduiling, Internaliztaion 등 엔터프라이즈 서비스들을 포함하고 있음

Spring AOP

Spring Framework에서 관점지향 프로그래밍을 할 수 있고, AOP를 적용 할수 있게 도와주는 Module

Spring DAO

Data Access Object
Database Data에 접근하는 객체
Spring JDBC DAO는 추상 레이어 지원

Spring ORM

Object Relational Mapping
간단하게 객체와의 관계 설정을 하는 것
Spring에서 Ibatis, Hibernate 등 인기 있는 객체 관계형 도구를 사용할 수 있도록 지원

Spring Web

Application Module에 내장되어 있음
Web 기반 응용 프로그램에 대한 Context를 제공, 일반적인 Web Application 개발에 필요한 기본적인 기능을 지원

Spring MVC

Model2 구조로 Apllication을 만들 수 있도록 지원
웹 응용 프로그램을 작성하기 위한 완전한 기능을 갖춘 MVC를 구현
전략 인터페이스를 통해 고급 구성 가능하며 JSP, Velocity, Tiles, iText 및 POI를 포함한 수많은 뷰 기술을 지원


참고

profile
꿈꾸던 내가 될꺼야😃

0개의 댓글