Day 66 : 스프링 프레임워크
1. Framework : 골격, 뼈대, 틀
2. 프레임워크 장점
① 빠른 구현 시간 : 골격 코드가 제공되어 개발자는 로직만 구현하면 됨
② 쉬운 관리 : 동일한 아키텍처를 이욯하므로 유지보수 용이
③ 개발자 역량 획일화 : 제공되는 골격코드를 사용하기 때문에 숙련된 개발자와 초급 개발자의 코드가 비슷해짐 → 개발 인력 구성 효율화
④ 검증된 아키텍처의 재사용과 일관성 유지 : 프레임워크가 제공하는 아키텍처 사용으로 시간이 지나도 유지보수 과정에서 아키텍처 왜곡, 변형 X
3. 프레임워크 탄생 배경
: 2004년에 로드 존슨이 개발
: 그 전엔 EJB(Enterprise Java Beans) 사용
※ POJO (Plain Old Java Object) : 평범한 옛날 자바 객체 (특별한 규칙이 없고 단순)
Not POJO : 규칙 有 (ex: Servlet 클래스)
4. 스프링 프레임워크 특징 : "Ioc와 AOP를 지원하는 경량의 컨테이너 프레임워크"
① 경량 (Lightweight)
: 여러 개의 모듈(하나 이상의 JAR 파일로 구성)로 구성 → 이 몇개의 JAR 파일만 있으면 개발과 실행 모두 가능
: POJO 형태의 객체를 관리
② 제어의 역행 (IoC : Inversion of Control)
: 낮은 결합도(낮은 의존관계)와 높은 응집도
③ 관점 지향 프로그래밍 (AOP : Aspect Oriented Programming)
: 핵심 비즈니스 로직과 각 비즈니스 메소드마다 반복해서 등장하는 공통 로직을 분리 → 응집도↑, 유지보수 용이성↑
즉, 공통으로 사용하는 기능들을 외부의 독립된 클래스로 분리하여 '선언적'으로 처리
④ 컨테이너 (Container)
: 특정 객체의 생성과 관리를 담당하며, 객체 운용에 필요한 다양한 기능 제공 (일반적으로 서버 안에 포함) (ex: Servlet 컨테이너)