본문 바로가기

Develop/Spring

Springboot, Spring 개념정리 1

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의 장점 

  1. 코드가 단순해진다.
  2. 컴퓨턴트 간의 결합도가 제거된다.

 

스프링은 엄청나게 많은 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