FastCampus 강의/Spring 완전판 초격차 패키지

FC스프링 ch02. 스프링의 핵심 기술 익히기

의그 2021. 9. 13. 20:56

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의 기본 개념들