Spring 정리
작년 말, 스프링부트2 deprecated
이관 작업할 사람을 많이 구했다
Spring 기반의 웹 프레임워크가 굉장히 많다
Spring 프레임워크가 뭔가요?
IoC와 AOP를 지원하는 경량의 프레임워크
1) IoC가 무엇인가요?
Inversion of Control
제어의 역행
Spring에서는 제어를 프레임워크에 맡길 예정
컨테이너를 통해 제어를 수행할 것임
컨테이너란? 객체를 생성하거나 객체를 관리하는 주체
관리란? 호출/소멸 시점을 정하는 것
웹서버, 톰캣 => 서블릿 컨테이너
서블릿만 생성 가능
Spring 프레임워크에서 사용하는 컨테이너 => Spring 컨테이너
POJO 생성 가능
코드에 new가 없는게 좋다
컨테이너가 하는게 좋다
C 파트는 new라는 연산자를 사용하지 않도록 한다
HM 안에 new 코드들 => 스프링 컨테이너가 대신 할 예정
2) AOP가 무엇인가요?
Aspect Oriented Programming
관점 지향 프로그래밍
- 절차 지향 프로그래밍: 순서대로 진행하는 방식, 일의 처리 순서가 가장 중요, 알고리즘이 중요, 성능-속도
- 객체 지향 프로그래밍: 모듈 단위로 코드를 구성하는 방식, 객체가 중요, 설계가 중요, 성능-메모리
- 관점 지향 프로그래밍
기존의 기능 개발은 "핵심 로직"을 중심으로 개발되었습니다
다양한 CRUD에 공통적으로 적용되는 로직을 따로 모듈화해서 저장, 호출 가능해짐
Spring 컨테이너가 AOP를 지원해주기 때문에 공통로직(횡단관심)을 별도의 클래스로 작성하게 됩니다
3) 경량이란 무엇인가요?
1. 다루는 객체가 가볍다 == POJO
2. 사용되는 메모리가 적다 == 싱글톤 패턴 활용
4) 프레임워크 vs 라이브러리 vs API
프레임워크를 활용했을 때의 장점이 무엇인가요?
SpringMVC 이미 적용된 프로젝트를 하나 생성해줌 == 구현이 빨라짐
개발자의 실력이 상향 평준화됨
일관성이 유지되기 쉬움
결합도를 낮추기 위한 개발자들의 다양한 노력
1. 인터페이스를 활용하는 방법
=> 객체가 변경되어도 메서드를 추가 변경하지 않아도 괜찮음
2. 팩토리 패턴을 활용하는 방법
=> 코드에 new가 없어짐 == 결합도가 낮아짐