Spring 이란 ?
- 흔히 스프링이라 부르지만 정식으로는 스프링 프레임워크(Spring Framework)라고 합니다.
(자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크)
Spring Framework란 ?
- 엔터프라이즈급 어플리케이션을 구축할수 있는 가벼운 솔루션
- 원하는 부분만 가져다 사용할수있도록 모듈화가 잘되어 있습니다.
- IOC 컨테이너 입니다.
- 선언적으로 트랜잭션을 관리할수 있습니다.
- 완전한 기능을 갖츶 MVC Framework를 제공합니다.
- AOP를 지원합니다.
- 스프링은 도메인 논리 코드와 쉽게 분리될수 있는 구조로 되어 있습니다.
1)오픈소스란 ?
- 소프트웨어 및 하드웨어 제작자의 권리를 지키녀서 원시코드를 누구나 열람할수있도록 한
소프트웨어, 오픈소스 라이센스에 준하는 모든 통칭을 일컫는다.
(소스가 공개되어 여러 개발자가 플랫폼을 함께 개발, 구축, 보완해 나가는 시스템)
쉽게 말해 말그대로 소스가 오픈되어 있으며, 상업적인 활용도 가능하다고 생각하시면 됩니다.
2) 프레임워크란 ?
- 개발할때 설계 기본이 되는 뼈대나 구조 / 환경 이고 쉽게말해 자주 쓰일만한 기능들을
모아놓은 유틸(클래스)들의 집합이라고 정의할수있습니다.
- 기본적인 설계 및 필요한 라이브러리를 제공해줌으로써 개발자가 만들고싶은 기능을 구현하는데
집중할수있도록 도와줍니다.(라이브러리와 비슷한 면)
Spring의 대표적인 특징
1) POJO(Plain Pld Java OBject)방식 : 오래된 방식의 간단한 자바 오브젝트
- 말그대로 평범한 자바 오브젝트입니다.
POJO는 gettet/setter를 가진 단순 자바 오브젝트로 정의를 하고 있습니다.
이러한 단순 오브젝트는 의존성이 없고 추후 테스트 및 유지보수가 편리한 유연성의 장점을 가집니다.
이러한 장점들로 인해 객체지향적인 다양한 설계와 구현이 가능해지고
POJO의 기반의 Framework가 조명을 받고 있습니다.
POJO를 사용함으로써, 더욱 심플해졌고, 테스트 하기에 더 좋으며 유연하고,
요구사항에 따라 기술적 선택을 바꿀수 있습니다.
2)AOP(Aspect Oriented Programing) : 관점 지향 프로그래밍
- 핵심기능과 공통기능을 분리시켜 핵심 로직에 영향을 끼치지 않게 공통기능을 끼워 넣는 개발 형태 이며
이렇게 개발함에 따라 무분별하게 중복되는 코드를 한 곳에 모아 중복 되는 코드를 제거 할 수 있어지고
공통기능을 한 곳에 보관함으로써 공통 기능 하나의 수정으로 모든 핵심기능들의 공통기능을 수정 할 수 있어
효율적인 유지보수를가능하게해주고 재활용성을 극대화 시켜주는 프로그래밍 기법입니다.
(트랜잭션, 로깅, 보안등 여러 모듈에서 공통적으로 지원하는 기능을 분리하여 관리가 가능)
ex) 여러개의 클래스가 있는데 서로 코드와 기능들이 중복되는 부분이 많습니다. 코드가 중복될 경우에
실용성 및 가독성, 개발속도가 떨어지기때문에 중복되는 기능을 따로 분리해서
그 기능이 필요할때만 호출하면 효율성이 좋아집니다.
3) IOC(Inversion of Control) : 제어의 역전/의존적 주입
- 말그대로 제어를 하는것은 다른곳에 있다는 의미입니다.
기존에는 모든 작업을 사용자가 제어하는 구조 였습니다. 하지만 IOC를 사용하여
사용자가 자신의 모든권한을 다른대상에 위임함으로써 제어권한을 위임받은
특별한 객체에 의해 결정되고 만들어집니다.
쉽게말해, IOC란 기존 사용자가 모든 작업을 제어하던 것을 특별한 객체에 모든 것을 위임하여
객체의 생성부터 생명주기 등 모든 객체에 대한 제어권이 넘어 간 것을 IOC, 제어의 역전 이라고 합니다.
IOC는 DI와 DL에 의해 구현됩니다.
4) DI(Dependency Injection) : 의존성 주입
- 객체간의 의존 관계를 다른것이 조립해 주는것으로 내가 필요한 객체를 받아오는것이 DI(의존성 주입)입니다.
(각 계층이나 서비스간 객체간의 의존성이 존재할 경우 스프링이 직접 서로연결)
- 프로그램에 필요한 의존관계(각종 클래스등)를 Bean Container에 두고 필요할때 마다
Bean 설정정보를 바탕으로 Container가 자동으로 연결해주는 것입니다.
5) MVC(Model-View-Controller의 약자)
- MVC란 (Model View Controller) 구조로 사용자 인터페이스와 비지니스 로직을 분리하여 개발 하는 것 입니다.
MVC에서는 Model1과 Model2로 나누어져 있으며 일반적인 MVC는 Model2를 지칭합니다.
(1)Model
Model에서는 데이터처리를 담당하는 부분입니다. Model부분은 Serivce영역과 DAO영역으로 나누어지게 되고
여기서 중요한 것은 Service 부분은 불필요하게 HTTP통신을 하지 않아야하고 request나 response와 같은
객체를 매개변수로 받아선 안된다. 또한 Model 부분의 Service는 view에 종속적인 코드가 없어야 하고
View 부분이 변경되더라도 Service 부분은 그대로 재사용 할 수 있어야 한다.
Model에서는 View와 Controller 어떠한 정보도 가지고 있어서는 안된다.
(2)View
View는 사용자 Interface를 담당하며 사용자에게 보여지는 부분입니다. View는 Controller를 통해 모델에
데이터에 대한 시각화를 담당하며 View는 자신이 요청을 보낼 Controller의 정보만 알고 있어야 하는 것이 핵심.
Model이 가지고 있는 정보를 저장해서는 안되며 Model, Controller에 구성 요소를 알아서는 안된다.
(3)Controller
Controller에서는 View에 받은 요청을 가공하여 Model(Service 영역)에 이를 전달한다.
또한 Model로 부터 받은 결과를 View로 넘겨주는 역할을 합니다.
Controller에서는 모든 요청 에러와 모델 에러를 처리하며 View와 Controller에 정보를 알고 있어야한다.
Model과 View의 정보에 대해 알고 있어야한다.
이렇게 Model, View, Controller를 나누는 이유는 소스를 분리함으로서 각 소스의 목적이 명확해 지고 유지보수하는데
있어서 용이하기 때문이다. Model의 Service영역은 자신을 어떠한 Controller가 호출하든 상관없이 정해진 매개변수만
받는다면 자신의 비즈니스 로직을 처리할 수 있어야한다.
즉, 모듈화를 통해 어디서든 재사용이 가능하여야 한다는 뜻이다. 이말은 View의 정보가 달라지더라도 Controller에서
Service에 넘겨줄 매개변수 데이터 가공만 처리하면 되기 때문에 유지보수 비용을 절감 할 수 있는 효과가 있다.
또한 Service영역의 재사용이 용이하기 때문에 확장성 부분에서도 큰 효과를 볼 수 있는 장점이있다.
'Programing > Spring' 카테고리의 다른 글
[Spring]스프링 설치 및 환결설정하기 (0) | 2019.04.19 |
---|