01. 자바, 그리고 스프링, 스프링 부트
# Java : 객체지향적 프로그래밍 언어
- 우리가 배우게 될 스프링의 근간이 되는 언어(한글)
- 스프링은 자바 뿐 아니라 코틀린, 그루비로도 사용할 수 있으나 여기서는 자바로 진행.
- 스프링 자체도 거의 대부분 자바로 만들어져 있음.
# Spring Framework : 기업용 어플리케이션을 만드는데 사용 가능한 오픈소스 프레임워크.
- 자바(한글)을 이용해서 어플리케이션(책)을 쓰기 위해 활용하는 프레임워크(여러 툴이 있는 템플릿)
자바, 서블릿, J2EE ~~~> 스프링 프레임워크
- 스프링 내에는 동일한 역할을 하는 다양한 기능이 있으며, 그 중에서 적합한 툴을 선택할 수 있어야 한다.
# Spring boot : 스프링 기반으로 자주 사용되는 설정으로 손쉽게 개발할 수 있게 해주는 상위 프레임워크
- 스프링(각종 도구가 있는 템플릿)보다 한층 더 편리한 프레임워크(ppt)
- 웹 어플리케이션(톰캣 등) 서버 내장
- 자동 설정, 설정 표준화
- 하지만 원한다면 모두 마음대로 설정할 수 있음.
02. 스프링의 Core Technology
* Core (DI, IoC)
* AOP (Aspect Oriented Programming, 관점 지향 프로그래밍)
* Validation, Data binding
* Resource
* SpEL
* Null-Safety
* 디자인 철학
- 모든 기능에서 다양한 가능성(다양한 모듈)을 사용 가능, 심지어 외부 모듈을 활용 가능
(너무 높은 자유도 어떤 점에서는 스프링을 어렵게 하는 요소)
- 유연하게 계속 추가 개발을 하고 있는 프레임워크
- 이전 버전과의 강력한 호환성
(너무 많은 레거시 때문에 코드의 복잡성이 높아지긴 함)
- API 디자인을 섬세하게 노력한다.
(스프링 코드 자체가 하나의 좋은 참고 소스)
- 높은 코드 품질을 유지하려 함
(스프링 프로젝트 github은 아주 좋은 참고 소스이자 PR과 이슈 관리도 좋은 프로세스 참고용)
03. DI - Dependency Injection (의존성 주입), IOC - Inversion of Control(제어의 역전)
* IoC나 DI는 레고와 같은 것이다.
- 스프링이 바닥판처럼 깔려 있고, 우리는 그 위에서 멋진 조립(나의 어플리케이션)을 만들면 된다.
Bean이란?
* 자바에서의 javaBean
- 데이터를 저장하기 위한 구조체로 자바 빈 규약이라는 것을 따르는 구조체.
- private 프로퍼티와 getter/setter로만 데이터를 접근한다.
* 스프링에서의 Bean
- 스프링 IoC 컨테이너에 의해 생성되고 관리되는 객체.
- 자바에서처럼 new Object();로 생성하지 않는다.
- 각각의 Bean들 끼리는 서로를 편리하게 의존(사용)할 수 있다.
04. AOP(Aspect Oriented Programming) - 관점 지향 프로그래밍
- 특정한 함수 호출 전이나 후에 뭔가 공통적인 처리가 필요하다면!? -> AOP
( 로깅 / 트랜잭션 / 인증 )
- OOP로 처리하기에는 다소 까다로운 부분을 AOP라는 처리 방식을 도입하여 손쉽게 공통 기능을 추가/수정/삭제할 수 있도록 함.
# AOP의 기본 개념들
'FastCampus 강의 > Spring 완전판 초격차 패키지' 카테고리의 다른 글
FC스프링 ch01. 프로 개발자로 성장하는 법 (0) | 2021.09.13 |
---|