일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Jenkins
- Redis
- ASG
- kubernetes
- codepresso
- TypeScript
- 아키텍처
- docker
- k8s
- NoSQL
- ELB
- AWS
- Auto Scaling Group
- Typesript
- Elastic Load Balancing
- ci/cd
- springboot
- 코드프레소
- REPLICATION
- Today
- Total
Study Note
Spring 프레임워크 본문
라이브러리
하나의 프로그램 로직을 재활용하기 위해 만들어 놓은 함수의 집합이다. 라이브러리를 사용하면 프로그래밍을 하는 사람이 자신의 방식에 맞추어서 큰 골격부터 세세한 부분까지 프로그래밍이 가능하다.
프레임워크
프레임워크도 라이브러리와 같이 함수의 집합이지만 이미 프로그램의 골격이 이루어져 있어 그 기준에 맞추어서 만들어야 한다. 간단히 라이브러리는 프로그래머가 마음대로 만들 수 있다면 프레임워크는 정해진 틀에 맞추어서 만들어야 한다.
프레임워크 장점
- 빠른 구현 시간 : 골격 코드인 아키텍처를 프레임워크가 제공함으로써 프레임워크를 사용하지 않을 때보다 구현 속도가 빠르다
- 쉬운 관리 : 프레임워크가 같은 어플리케이션들은 아키텍처가 같아 관리하기 쉽다.
- 개발자들의 역량 획일화 : 숙련자나 초보자가 프레임워크를 이용해서 코딩을 하게 되면 같은 아키텍처를 이용해서 코딩을 하기 때문에 코드가 비슷해진다.
- 검증된 아키텍처의 재사용과 일관성 유지 : 프레임워크에서 제공하는 아키텍처를 사용하므로 이미 개발된 시스템은 시간이 지나도 유지 보수 과정에서 아키텍처가 왜곡되거나 변형되지 않는다.
Spring 프레임워크
Spring 이전에는 EJB(Enterprise Java Beans)로 대부분의 엔터프라이즈 어플리케이션이 개발되어왔다. EJB의 여러 문제점을 개선해서 java 기반의 Spring이 나왔다. Spring은 다음과 같은 특징을 가진다.
Lightweight(경량)
Spring은 여러 모듈로 구성되어 있고, 각 모듈은 하나 이상의 JAR 파일로 구성되어 있다. 이런 JAR 파일 몇 개만 있으면 개발, 실행이 모두 가능하다.
또한 POJO 형태의 객체를 관리하기 때문이다. Spring은 java 기반의 프레임워크이고 POJO는 제한에 묶여있지 않은 자바 오브젝트이다. 이런 제한 없는 POJO 객체를 관리하기 때문에 기존의 EJB에 비해서 가볍다.
Inversion of Control(제어의 역행)
IoC(Inversion of Control)를 통해 객체 간의 낮은 결합도를 유지해준다. 보통 java에선 new를 통해 객체 생성을 하지만 IoC가 적용되면 컨테이너가 대신 처리해 주며 객체 간의 의존관계도 컨테이너가 처리한다.
Aspect Oriented Programming(관점지향 프로그래밍)
AOP(Aspect Oriented Programming)는 핵심 비지니스 로직과 비지니스 메소드마다 반복해서 나오는 공통 로직을 분리해서 높은 응집도를 지원한다. 공통기능들은 독립된 클래스로 분리하고, 해당 기능을 직접 명시하지 않고 선언적으로 처리해서 적용하는 것이 AOP의 기본이다.
Container(컨테이너)
컨테이너는 특정 객체의 생성과 관리를 담당하며 객체 운용에 필요한 기능을 제공하는 격리된 공간이다. 보통 서버 안에 포함되어 배포 및 구동이 된다. Spring도 객체 생성과 객체 간의 의존관계를 관리하기 때문에 컨테이너라 할 수 있다.
'Spring' 카테고리의 다른 글
Spring IoC 컨테이너 (0) | 2020.02.19 |
---|---|
Spring Model (0) | 2020.02.18 |