1. Spring Framework의 기본적인 개념과 필요성을 이해할 수 있다.
2. Spring Framework의 특징에 대해 이해할 수 있다.
- Spring Framework
✔︎ 소프트웨어의 구체적인 부분에 해당되는 설계와 구현을 재사용 가능
하게, 일련의 협업화된 형태
로 클래스들을 제공하는 것
✔︎ 기본적으로 프로그래밍을 하기 위한 어떠한 틀
이나 구조
✔︎ 장점
효율적인 코드
작성효율적으로 관리
✔︎ 단점
학습 필요
자유롭고 유연한 개발
이 어려움✔︎ 애플리케이션을 개발하는 데 사용되는 일련의 데이터
및 프로그래밍 코드
✔︎ 애플리케이션을 개발할 때 필요한 기능을 미리 구현해놓은 집합체
✔︎ Framework는 뼈대
, Library는 부품
✔︎ 한번 정해진 Framework는 교체하기 어려우나, Library는 쉽게 교체 가능하고 필요한 Library를 선택적으로 사용
✔︎ 애플리케이션에 대한 제어권 차이 🌟
주도권
이 Framework
에 있음주도권
이 개발자
에게 있음✔︎ 장점
✔︎ 학습 목적
재사용
과 확장
이 가능한 애플리케이션 개발 스킬 향상복잡한 기업용 엔터프라이즈 시스템
을 제대로 구축할 수 있는 능력 보유 가능※ 기업용 엔터프라이즈 시스템
자원 효율성
, 보안성
, 시스템의 안정성
이나 확장성
을 충분히 고려해 시스템을 구축✔︎ 등장 배경
- Spring Framework 특징
✔︎ POJO
✔︎ POJO Programming
✔︎ Java 외 다른 기술이나 규약에 얽매이지 ❌ , 특정 환경에 종속적 ❌
✔︎ POJO Programming의 필요성
✔︎ Spring 삼각형 (Spring Triangle)
✔︎ Sping Framework는 POJO 프로그래밍을 지향하기 위해 IOC/DI
, AOP
, PSA
기술 제공
✔︎ POJO 프로그래밍을 효과적으로 적용시키기 위해서는 특정 기술에 대한 지식보다는, JDK의 API에 대한 지식과 객체지향적인 사고 방식과 설계를 위한 훈련이 우선시 🌟
✔︎ SRP (Single Responsibility Principle)
✔︎ OCP (Open / Closed Principle)
✔︎ LSP (Liskov Substitution Principle)
✔︎ ISP (Interface Segregation Principle)
✔︎ DIP (Dependency Inversion Principle)
✔︎ 제어의 역전
✔︎ 애플리케이션 흐름의 주도권이 뒤바뀐 것
✔︎ 애플리케이션 흐름의 주도권이 사용자에게 있지 않고, Framework이나 서블릿 컨테이너 등 외부에 있는 것
✔︎ 의존성 주입
✔︎ 클래스 내부에서 new
를 사용해 참조할 클래스를 직접 생성하지 않고, 생성자 등을 통해 외부에서 다른 클래스의 객체를 전달 받음
✔︎ 클래스 간의 강한 결합을 느슨한 결합으로 만들어 줌
✔︎ 강한 결합 (Tight Coupling)
new
키워드를 통해 객체를 생성할 때의 클래스 간 관계✔︎ 느슨한 결합 (Loose Coupling)
✔︎ 관심 지향 프로그래밍
✔︎ 애플리케이션의 핵심 업무 로직
에서 공통 기능 로직
들을 분리하는 것
✔︎ 공통 관심 사항 (Cross-cutting Concern)
✔︎ 핵심 관심 사항 (Core Concern)
✔︎ AOP 사용 시 이점
✔︎ 추상화 (Abstraction)
✔︎ PSA (일관된 서비스 추상화)
✔︎ PSA 필요성
☞ 대망의 Spring에 발을 디뎠다. 시작부터 방대하고 이해하기 어려운 Spirng Framework의 특징들을 접하면서 열심히 이해해보려 노력했던 것 같다. 아직 내가 다 이해한 것도 아니고, 이해했다고 생각한 부분도 옳게 이해했는 지 자신이 없다. 그러나 Spirng 관련해서 공부하는 기간이 한 달 이상 잡혀있는 만큼 수차례 반복하고, 실시간 세션에서 크루님들의 말씀을 들어가며 이해하려 노력하는 자세가 중요할 것 같다. 쫄지말고 해내가자.
∙ Spring Framework 모듈 구성
∙ Spring Boot