Skip to content
- 참조 :
- Spring을 배워야할 이유 : https://seolin.tistory.com/119
- https://goddaehee.tistory.com/156
- https://khj93.tistory.com/entry/Spring-Spring-Framework
- 정의
- 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크
- 엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션
- 동적 웹 사이트를 개발하기 위한 여러가지 서비스 제공
- 대한민국 공공기관의 웹서비스 개발시 사용을 권장하고 있는 [전자정부 표준 프레임워크]의 기반 기술
- 특징
- Open Source : 제작자의 권리를 지키면서 원시 코드를 누구나 열람할 수 있도록 한 소프트웨어
- Framework : 설계 기본이 되는 뼈대나 구조
- 경량 컨테이너로서 자바 객체를 직접관리 : 각각의 객체 생성, 소멸과같은 라이프 사이클을 관리
- 제어 역행(IoC; Inversion of Cotrol)
- 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어 필요에 따라 스프링에서 사용자의 코드를 호출
- 제어의 흐름을 사용자가 컨틀로하지 않고 위임한 특별한 객체에 모든 것을 맞기는 것
- 의존성 주입(DI; Dependency Injection) : 각각의 계층이나 서비스들 간의 의존성이 존재할 경우 프레임워크가 서로 연결시켜줌
- 관점지향 프로그래밍(AOP; Aspect-Oriented Programming) : 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.
- 컨테이너(Container) 라고도 함
- 모델-뷰-컨트롤러(MVC; Model View Controller) 패턴
- 공통 부분의 소스 코딩이 용이하며 확장성이 매우 높음
- MVC(Model View Controller)
- Model
- 데이터 처리를 담당하는 부분
- Service 영역과 DAO 영역으로 나누어짐
- Service는 불필요하게 HTTP 통신을 하지 않고, request나 response와 같은 객체를 매개변수로 받아서는 안됨
- Service에서는 View에 종속적인 코드가 없어야 함
- View가 변경이 되더라도 Service는 재사용 가능해야 함
- Model에서는 View와 Controller의 어떠한 정보도 가지고 있으면 안됨
- View
- 사용자 인터페이스를 담당하며 사용자에게 보여지는 부분
- View는 Controller를 통해 모델에 데이터에 대한 시각화를 담당
- View는 자신이 요청을 보낼 Controller의 정보만 알고 있어야 함
- Model이 가지고 있는 정보를 저장해서는 안되고, Model과 Controller의 구성요소를 알아서도 안됨
- Controller
- View에서 받은 요청을 가공하여 Model(Service영역)에 전달
- Model로 부터 받은 결과를 View에 넘겨주는 역할
- 모든 요청 에러와 모델 에러를 처리
- Model과 View에 대한 정보를 알고 있어야 함
- MVC로 분리하면
- 소스의 목적이 명확, 유지보수가 용이
- Model의 Service영역은 자신을 어떠한 Controller가 호출하든 상관없이 정해진 매개변수만 받는다면 자신의 비즈니스 로직을 처리할 수 있어야함
- 즉, 모듈화를 통해 어디서든 재사용이 가능
- View의 정보가 달라지더라도 Controller에서 Service에 넘겨줄 매개변수 데이터 가공만 처리하면 되기 때문에 유지보수 비용을 절감할 수 있는 효과가 있다.
- Service영역의 재사용이 용이하기 때문에 확장성 부분에서도 큰 효과를 볼 수 있다.
- Spring Framework의 구조
- Spring Core
- 스프링 프레임워크의 근간 요소
- IoC(또는 DI) 기능을 지원하는 영역 담당
- BeanFactory를 기반으로 Bean클래스들을 제어할 수 있는 기능 지원
- Spring Context
- Spring Core 외의 추가적인 기능과 좀 더 쉬운 개발이 가능하도록 지원
- JNDI, EJB 등을 위한 Adapter들을 포함
- Spring DAO : Data Access Object
- 기존의 JDBC 기반의 DAO를 좀더 쉽고, 일관된 방법 지원
- 기존의 DAO보다 적은 코드와 쉬운방법으로 개발이 가능
- Spring ORM : Object Relation Mapping
- Hibernate, IBatis, JDO와의 결합 지원
- Spring AOP : Aspect Oriented Programming
- AOP Alliance 기반하에서 개발
- Spring Web
- 웹 애플리에키션 개발에 필요한 Web Application Context와 Multipart Request 등의 기능 지원
- Struts, WebWork와 같은 프레임워크의 통잡 지원
- Spring Web MVC
- Web UI Layer에 Model-View-Controller를 기원
- Struts, Webwork의 기능을 대체 가능
- Velocity, Excel, PDF와 같은 다양한 UI기술들을 사용하기 위한 API 제공
error: Content is protected !!