1. 스프링이란?
- 스프링은 프레임워크이며 오픈소스이다.
- 스프링은 IoC 컨테이너를 가진다.
- 스프링은 DI(Dependency Injection)를 지원한다.
- 스프링은 엄청나게 많은 필터를 가지고 있다.
- 스프링은 엄청나게 많은 Annotation을 가지고 있다. (리플렉션, 컴파일체킹)
- 스프링은 MessageConverter를 가지고 있다. 기본값은 현재 Json이다.
- 스프링은 BGufferedReader와 BufferedWriter를 쉽게 사용할 수 있다.
스프링은 IoC 컨테이너(=스프링 컨테이너)를 가진다
IoC(제어권의 역전)의 개념 : 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미
IoC 컨테이너 : 객체에 대한 생성 및 생명주기를 관리할 수 있는 기능을 제공
스프링은 DI(Dependency Injection)를 지원한다.
IoC는 DL과 DI로 분류 된다.
DL : 저장소에 저장되어 있는 Bean에 접근하기 위해 컨테이너가 제공하는 API를 이용하여 Bean을 Lookup 하는 것
DI : 각 클래스간의 의존관계를 빈 설정 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것 → DL 사용시 컨테이너 종속이 증가하여, 주로 DI를 사용한다.
-개발자들은 단지 빈 설정 파일에서 의존관계가 필요하다는 정보를 추가하면 된다.
-객체 레퍼런스를 컨테이너로부터 주입 받아서, 실행 시에 동적으로 의존관계가 생김
-컨테이너가 흐름의 주체가 되어 애플리케이션 코드에 의존관계를 주입해준다.
DI의 장점
- 코드가 단순해진다.
- 컴퓨턴트 간의 결합도가 제거된다.
스프링은 엄청나게 많은 Annotation을 가지고 있다. (리플렉션, 컴파일체킹)
Annotation : 주석 + 힌트 → @override, @controller 와 같은것들 : Annotation은 클래스와 메서드에 추가하여 다양한 기능을 부여한다. 이를 활용하여 Spring에서는 해당 클래스가 어떤 역할인지 정하기도 하고, Bean을 주입하기도 하며, 자동으로 getter, setter를 생성하기도 한다. 특별한 의미를 부여하거나 기능을 부여하는 등 다양한 역할을 수행 가능
ex) @component : 클래스를 메모리에 로딩해라, @Autowired : 로딩된 객체를 해당 변수에 집어 넣어라
Spring Annotation 종류 확인 -> http://melonicedlatte.com/2021/07/18/182600.html
리플랙션(reflection) : 어떤 해당 클래스가 어떤 클래스, 어떤 method, 어떤 Annotation을 들고 있는지 분석하는 기법 → 런타임시에 분석
@Transactional : 조회를 제외한 생성,수정,삭제의 동작을 수행할 때 쿼리를 처리하는 과정에서 오류가 발생했을 때 자동으로 롤백해주는 역할을 수행해줍니다.
스프링은 MessageConverter를 가지고 있다. 기본값은 현재 Json이다.
java에서 request, response을 할 때 Jackson의 JSON을 이용해 MessageConverting을 한다.
'Develop > Spring' 카테고리의 다른 글
| '코드로 배우는 스프링 웹 프로젝트' 정리(Controller) (0) | 2022.06.23 |
|---|---|
| Spring 궁금했던거 (0) | 2022.03.25 |
| Springboot, Spring 개념정리 3 (0) | 2022.03.22 |
| Springboot, Spring 개념정리 2 (0) | 2022.03.22 |
| Spring 웹 개발 기초 (0) | 2022.03.22 |