상세 컨텐츠

본문 제목

[WEB] 스프링 프레임워크(Spring Framework)

갭알/WEB

by ranlan 2021. 3. 13. 23:14

본문

728x90

SPRING FRAMEWORK

 

스프링 프레임워크(Spring Framework) 

자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크 (위키백과)

공공기관의 웹 서비스 개발 시 권장하는 전자정부 표준 프레임워크의 기반 기술로 쓰이고 있음

동적인 웹 사이트를 개발하기 위한 여러가지 서비스 제공하여 개발자들이 애플리케이션을 보다 쉽게 구현할 수 있도록 도와줌

경량급 애플리케이션 프레임 워크로 엔터프라이즈 개발 용이, 비즈니스 로직 개발에 전념할 수 있도록 도와줌

트랜잭션 처리를 위한 일관된 방법 지원(어떤 트랜잭션을 사용하던 설정을 통해 정보를 관리하므로 트랜잭션 구현에 상관없이 동일한 코드 사용 가능)

- 어노테이션, XML으로 설정

MyBatis, Hibernate 등 데이터베이스 처리를 위한 ORM 프레임워크들과의 연동, 영속성과 관련된 다양한 API 지원

 

○ DI(Dependency Injection, 의존성 주입)

객체에 속성값을 주입하는 방식으로 모듈간의 결합도를 낮추어 유현한 코드를 작성하게 해주는 역할
설정파일이나 어노테이션을 통해 객체 간의 의존관계 설정 가능

 

 Ioc(Inversion of Control, 제어의 역행)

개발자가 부품 생성->조립하는 형태로 개발 가능하며 이렇게 조립된 코드의 최종 호출은 개발자가 결정하는 것이 아니라 프레임 워크 내부에서 결정
즉, 사용자가 제어의 흐름을 컨트롤 하지 않고 스프링에 위임
DI는 제어의 역행이 일어나는 것을 전제 조건으로 하여 스프링 내부 객체들 사이 필요로 하는 의존관계를 자동으로 연결해줌(의존관계 관리)

 

 AOP(Aspect-Oriented Programming, 관심지향 프로그래밍)

프로그램 로직 중 반복되는 코드를 분리하여 중복된 코드를 줄여주고 핵심 로직에 대한 가독성을 높힘

 

 POJO(Plain Old Java Object)

객체지향 원리에 충실하면서 특정 환경이나 규약에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 객체
(getter/setter만 가진 단순한 자바 객체로 의존성이 없음)
스프링은 내부적으로 객체 간의 관계를 구성할 때 별도의 API등을 사용하지 않는 POJO 만으로 구성이 가능함
스프링 컨테이너에 저장되는 자바 객체는 특정한 인터페이스를 구현하거나 특정 클래스를 상속받지 않아도 됨

→ 유지보수 및 테스트가 쉽고 객체지향적인 다양한 설계와 구현 가능

 

 MVC(Model View Controller)

Model : 서버에서 동작하는 로직 처리
View : 결과를 출력하여 사용자에게 보여줌
Controller : 사용자의 입력 처리와 흐름 제어 담당

 

 

 

스프링 부트(Spring Boot) 

자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크인 스프링 프레임워크의 서브 프로젝트로 스프링을 더욱 쉽고 간편하게 사용할 수 있음

빠른 시간 안에 애플리케이션이 제품이 될 수 있는 것을 목표로 함

내장 톰캣이나 제티로 웹 실행환경이나 의존성 관리 등 인프라 관련 등은 신경슬 필요 없이 바로 개발 시작 가능

 

- starter 모듈을 통한 라이브러리 의존성 자동화

- 스프링 설정 간편화와 라이브러리 버전 자동 관리

- 내장 Tomcat과 테스트 환경(Junit) 기본 포함

- JAR 파일로 패키징 가능

 

spring boot initializer https://start.spring.io/

 


 

 

▷ 프레임워크(Framework)

개발자가 생산하는 코드 품질 및 개발 속도를 상향 평준화 시키기 위해 고안된 규약이자 표준 개발 방법을 제공해 주는 어플리케이션

개발할 때 설계 기본이 되는 뼈대나 구조, 환경

이미 만들어져있는 흐름에 따라 구현/수정만 하면 바로 적용할 수 있도록 기본적인 것들 제공

기본적으로 필요한 기능을 갖추고 잇으며 라이브러리(혹은 모듈) 포함

- 비즈니스 로직에만 집중할 수 있어 생산성 증대

- 코드의 재사용 및 유지보수가 용이하며 확장성 증대

 

 

라이브러리(Library)

반복적인 코드 작성을 없애기 위해 언제든 필요한 곳에서 호출하여 사용할 수 있도록 클래스나 메서드로 만들어진 것

재사용이 가능한 코드의 집합

외부에 소스를 유출하지 않고 자신이 만든 모듈 공유

컴파일 시간 단축

 

- 정적 라이브러리

필요한 함수를 프로그램 코드에 붙여 프로그램 자체에서 참조
프로그램 실행 후 빠른 처리시간


- 동적 라이브러리

프로그램 실행 시 필요시만 외부 dll 파일에서 함수를 참조
프로그램 실행 시 프로그램 로딩 시간 단축
함수 업그레이드 시 해당 dll만 수정 배포 가능

728x90

'갭알 > WEB' 카테고리의 다른 글

인자(Argument)와 매개변수(Parameter)  (0) 2021.03.20
객체 지향 프로그래밍  (0) 2021.03.16
VO vs DAO vs DTO  (0) 2021.03.13
[SPRING] Gradle vs Maven  (0) 2021.03.13
[WEB] 서버기반 인증 vs 토큰기반 인증  (0) 2021.03.08

관련글 더보기

댓글 영역