#Spring - 1. 스프링(Spring) 프레임워크 개요
본문 바로가기
Programming/Spring

#Spring - 1. 스프링(Spring) 프레임워크 개요

by 권가 2019. 6. 10.

1. 웹 시스템

기존의 웹 환경하에서 서로 다른 종류의 컴퓨터간에 상호 작용을 하기 위한 소프트웨어 시스템

클라이언트-서버 (C-S) 기반

HTTP,  메시지 지향적(XML, JSON)

플랫폼 중립적, 독립적

 

웹 개발 기술

언어: HTML, CSS and JavaScript 언어: PHP, Java,  Ruby, Python
라이브러리: jQuery  
프레임워크: Bootstrap, AngularJS 프레임워크: Spring, Rails, Django
  데이터베이스: MySQL, PostgreSQL, Oracle
  운영체제: Windows, Linux
  버전관리: CVS, Git

2. SW 품질

기능 품질: 소비자 요구사항 만족

구조 품질: 가독성, 재사용성, 확장성, 속도, Etc...


프레임워크란?

사전적으로 뼈대, 골격, 틀을 의미한다,

SW 구조 그리고 기반되는 클래스를 제공하기에 프레임워크는 구조 품질을 보장한다.

 

라이브러리 vs 프레임워크

중요한 차이점은 "Inversion of Contro" 제어 역전(반전)

우선, 제어 역전에 대해 이야기를 해보면 객체의 생성부터 생명주기 관리까지 모든 객체에 대한 제어권이 바뀐 것을 뜻한다.

라이브러리 프레임워크

클래스의 집합으로써 코드의 재사용성을 지원(Ex_math)
제어의 주체는 우리: 코드에서 라이브러리 함수를 호출

의존관계 연결 작업에 대한 제어권은 개발되는 어플리케이션에 있다.

제어의 주체는 프레임워크: 프레임워크에서 개발자의 코드를 호출(=제어의 역전)
프레임워크에서 기본적인 골격을 잡아놓았기 때문에 우리는 제어의 흐름에 맞게 코드를 작성해 두면 프레임워크에서 호출

Servlet, EJB 등을 사용할 시 Servlet Container, EJB Container에게 제어권이 넘어가 객체의 생명주기를 Container들이 전담한다.

 

프레임워크의 중요성

프레임워크는 반제품이다.

- 어플리케이션 구조 및 코드의 상당 부분을 제공.

- 개발자는 어플리케이션의 핵심 로직에 집중 가능.

 

프레임워크

장점:

인터페이스 기반 설계 가능하다.

컴포넌트 재사용성 증가.

체계적이고 효율적인 Dependency 관리할 수 있다.

단점: 제어의 역전으로 인해 이해하기 어려운 Code


Spring이란?

     Lightweight

     JAVA Application

     Framework

     (Open source)

POJO(vs EJB) 기반의 엔터프라이즈 어플리케이션 개발을 쉽고 편하게한다.

How?

자바 어플리케이션을 개발하는데 필요한 하부구조(infraStructure)를 포괄적으로 제공하고 스프링이 하부구조를 처리하므로 개발자는 어플리케이션 개발에 집중할 수 있기에 쉽고 편하게 개발 가능.


스프링 주요 특징


스프링 구성요소

개발자의 Enterprise Applications에 대해 Spring에서 취사선택하여 해결가능하다.


스프링 활용

스프링의 핵심(Core)기능은 어떤 자바 프로그램 개발에도 사용 가능

주로 Back-end Web Service, Etc...


정리.

스프링을 통해 Java Enterprise 시스템 개발을 쉽고 편하게 한다.

- 비즈니스 로직에 집중 가능하여 생산성 증대

- 재사용 및 유지 보수 용이, 확장성을 가진 코드 설계

 

전자정부프레임워크(www.egovframe.go.kr/)의 기반은 Spring이다.

 

소프트웨어 공학의 주요 설계 패턴을 경험할 수 있는 기회가 있다.

- 좋은 프로그래밍 습관 형성 가능.

 

SW를 개발하는 중요한 전략의 하나는

"항상 프레임워크 기반으로 접근하라"

-Rod Johnson-

댓글