본문 바로가기

STUDY/국비과정

[JAVA 웹 개발 공부] 국비지원 81일차 - 스프링 프레임 워크

프레임 워크

 

1. 프레임워크

프레임워크는 애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 커넥션 등의 기능들을 위해 뼈대(구조)를 제공한다. 개발자는 이러한 뼈대 위에서 코드를 작성해 원하는 애플리케이션을 개발할 수 있다. 
프레임워크는 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 상호 협력하는 클래스와 인터페이스의 집합이라고 할 수 있다. 쉽게 말해 프레임워크는 개발자가 개발을 쉽게 할 수 있도록 뼈대를 제공해준다고 생각하면 된다.

특성 내용
모듈화 프레임워크는 캡슐화를 통해 모듈화를 강화하고 설계 및 구현의 변경에 따른 영향을 최소화함으로써 소프트웨어의 품질을 향상
재사용성 프레임워크는 재사용 가능한 모듈들을 제공함으로써 예산 절감, 생산성 향상, 품질 보증이 가능
확장성 프레임워크는 다형성을 통한 인터페이스 확장이 가능하여 다양한 형태와 기능을 가진 애플리케이션 개발이 가능함
제어의 역흐름(IoC) 개발자가 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘김으로써 생산성을 향상시킴

 

2. 프레임워크 vs 라이브러리

라이브러리 프레임워크
소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임. 즉 특정 기능을 모와둔 코드, 함수들의 집합이며 코드 작성 시 활용 가능한 도구들을 의미 원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대를 의미
라이브러리의 메소드를 호출할 때 개발자에게 통제권 있음
(개발자 주도적)
제어의 역전 : 프레임워크안에서는 프레임워크가 호출함
(프레임워크가 주도적)
Python pip로 설치한 패키지/모듈 (tensorflow, pandas, beautifulsoup 등등)
C++의 표준 템플릿 라이브러리 (STL)
Node.js에서 npm으로 설치한 모듈
HTML의 클라이언트 사이드 조작을 단순화하는 JQuery
웹에서 사용자 인터페이스 개발에 사용되는 React.js
Java 서버 개발에 사용되는 Spring
Python 서버 개발에 사용되는 Django, Flask
안드로이드 앱 개발에 사용되는 Android
아이폰 앱 개발에 사용되는 Cocoa Touch
웹 개발에 사용되는 Angular, Vue.js 등
자바 기반의 JSP를 위한 프레임 워크 Struts
루비로 작성된 MVC패턴을 이용하는 Ruby on Rails

 

 

스프링 프레임워크

 

1. 스프링 프레임워크

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

스프링 프레임워크가 제공하는 다양한 어노테이션과 인터페이스를 이용하면 반복적으로 서블릿 클래스를 작성하지 않아도 된다.

스프링을 사용하면 HttpServlet을 상속받지 않아도 되고, doGet을 오버라이드하지 않아도 되고, HttpServletRequest를 직접 파싱하지않아도 되고, HttpServletResponse를 작성하지 않아도 된다. 

이런 장점을 활용하고자 스프링 프로젝트를 이용하는 것이다.

 

2. 스프링 프레임워크 특징

자바 객체를 직접 관리 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.
제어 반전(IoC : Inversion of Control) 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다.
의존성 주입(Dependency Injection) 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.
관점 지향 프로그래밍(AOP) 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.
높은 확장성 스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용이 가능하기 때문에 수많은 라이브러리가 이미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이하다.

 

 

스프링 프레임워크 설치

 

https://spring.io/

 

Spring | Home

Cloud Your code, any cloud—we’ve got you covered. Connect and scale your services, whatever your platform.

spring.io

 

+) 스프링 프레임워크 vs 스프링 부트

스프링 프레임워크 (Spring Framework) 스프링 부트 (Spring boot)
자바 플랫폼을 위한 오픈소스 애플리케이션 프레임 워크 스프링 프레임 워크를 사용하기 위한 설정을 자동화하여 이용자가 편하게 활용할 수 있도록 돕는 애플리케이션 프레임워크
STS3 STS4

 

Spring Tool Suite 3.9.15

full distribution on Eclipse 4.16 윈도우용 다운

https://github.com/spring-attic/toolsuite-distribution/wiki/Spring-Tool-Suite-3

 

Spring Tool Suite 3

the distribution build for the Spring Tool Suite and the Groovy/Grails Tool Suite - spring-attic/toolsuite-distribution

github.com

+) 프로젝트 만들기

Spring Legacy Project 만들기 > Spring MVC Project 선택 > 패키지명 도메인이름 역순(kr.co.greenart)

 

 

스프링 도큐멘트(메뉴얼)

 

https://docs.spring.io/spring-framework/docs/5.3.26-SNAPSHOT/reference/html/

 

Spring Framework Documentation

Overview history, design philosophy, feedback, getting started. Core IoC Container, Events, Resources, i18n, Validation, Data Binding, Type Conversion, SpEL, AOP. Testing Mock Objects, TestContext Framework, Spring MVC Test, WebTestClient. Data Access Tran

docs.spring.io