Intro
framework?
정의
- 뼈대나 근간을 이루는 코드들의 묶음
- 개발에 필요한 구조가 제공되고 필요한 부분을 조립하는 형태로 개발
- 개발 기간 단축, 팀 내 개인 능력차이 극복 & 일정 품질 보장
- 프랜차이즈의 레시피로 비유
<비유>
- 옛날엔 옷 다 만들어입음(개성, 특별)
- 현재는 기성품 사다가 입음 (프레임 워크 트렌드)
구조
-
Presentation Layer (HTML, CSS, Javascript) → View
: UI(기획에서 말하는것)를 담당하는 구성요소들이 들어간다. 웹과 모바일에 따라 사용되는 기술이 변경된다.
-
Business Logic Layer (Controller → Service Layer)
: 서비스 계층이라고도 하며, 기능적인 요구사항이 직접적으로 반영되는 계층이다.
-
Data Access Layout (DAO → Model)
: 저수준의 데이터 처리를 전문적으로 담당, DB에 대한 직접적인 제어가 포함된다.
-
DB
: DBMS 시스템
용어 정리
- 코드 구성 기법에 따른 용어 : View, controller
- 기획에서 쓰는 용어 : UI, Business Logic
- 작업 방식에 따른 분류 : service layer
Spring
정의
- Spring 프레임워크는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 간단히 Spring이라고도 불린다.
- 동적 웹사이트를 개발하기 위한 여러가지 기능들을 제공하고 있다.
- 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있다.
특징
경량 컨테이너
- 자바 객체를 직접 관리하는 POJO 방식의 프레임 워크
- 경량 컨테이너? 간단한 jar 파일들의 조합만으로 모든 개발이 가능
- POJO 프로그램 구현을 위해 특정한 인터페이스를 구현하거나 상속받을 필요 없이 일반적인 Java코드와 기존에 존재하는 라이브러리들을 그대로 활용하는 방식 (가볍다.)
- Java 클래스와 인터페이스를 그대로 활용하므로 EJB에 비해 매우 가벼움
- POJO 방식의 이점 : 개발자가 특정 라이브러리나 컨테이너 기술에 종속되지 않을 수 있기 때문에 생산성에서 유리, 테스트 작업이 좀 더 유연해짐
높은 확장성
- 다른 프레임워크들과의 통합을 지원
- 수많은 라이브러리가 지원되고 별도로 분리하기에도 용이함 (정부 표준 프레임워크)
제어반전 (IoC)
- 프레임워크가 개발자의 코드를 호출하기 때문에 전체를 직접 구현하지 않고 자신의 코드를 부분적으로 끼워넣기 하는 형태로 구현할 수 있다. (구현하고자 하는 기능에만 집중)
- 객체 생성, 소멸과 같은 라이프 사이클을 관리해 Spring에서 필요한 객체를 얻어올 수도 있다.
- 비유 : 강사님께 학생이 가는게 아니라 강사님이 학생들 알려주면 역량 차이 극복, 품질 일정 보장.
트랜젝션의 지원
- 트랜젝션의 관리를 어노테이션이나 XML로 설정할 수 있기 때문에, 개발자가 별도의 소스코드를 개발할 필요가 없다.
- Model1, Model2에서는 Mybatis의 트랜젝션 관리를 위해 개발자가 직접 commit과 rollback에 대한 제어 및 SqlSession에 대한 close 시점을 결정해야하지만 자동화 된다. (편리!)
구조
MVC + Service + DAO 패턴
- MyBatis에 DAO 역할 부여 (우리가 배웠던 방식)
- 원칙은 Service → DAO → MyBatis로 가는게 맞음
개발 방식
Maven 기반 ← 수업시간 채택
- Maven을 활용해서 라이브러리들의 의존성 설정
- 환경설정 내용을 XML 파일 기반으로 구성
- 전통적인 개발방식, 전자정부 표준 프레임워크도 이거 씀
- 자료를 얻기 쉬워서 초반 접근 용이
Spring Boot
- 비교적 최근에 등장한 개발방식
- 복잡한 Spring 설정방법을 간소화함
- 환경설정 내용을 Java 소스 기반으로 구성
- 최근에 많은 관심을 받음
- 관련 자료 부족, 설정 방식 다양 → 초기 진입 장벽 높음
STS
Spring Tool Suit
스프링 통합 개발 도구, 이클립스 마켓 플레이스에서 플러그인 형태로 설치 가능