IDE/Spring

[Spring Boot] Spring이란?

Ma_Sand 2023. 10. 3. 16:10
반응형

 

Spring이란?

1. Spring은 Framework이다.

 

2. Spring은 Open Source다.

 

3. Spring은 IoC 컨테이너를 가진다.

 - IoC란 Inversion of Control의 약어로, 주도권이 Spring에게 있다는 의미이다.

  • class : 설계도
  • object : 실체화가 가능한 것
  • instance : 실체화가 된 것

 

<Spring 이전>

변수 song은 실체화되어 heap 메모리에 올라간다.

이때 처음에 올라간 song은 다음에 올라간 song과는 아예 다른 변수이므로 heap 메모리에 새로 올라간다.

=> 이름은 같아도 각각 다른 변수이므로 나중에 관리하기가 힘들어진다.

 

<Spring>

Spring이 class를 관리한다. Spring은 class 전체를 쫙 스캔하여 heap 메모리에 전부 올려놓는다. class가 추가될 경우에도 Spring이 바로 heap 메모리에 올려놓는다.

=> heap 메모리에 올라간 instance를 여기저기서 가져다 쓰더라도 전부 같은 instance임을 인식한다.

=> Spring IoC 컨테이너를 사용하는 이유는 인터페이스를 활용하여 결합도를 낮추고, 의존도를 낮춰 비즈니스 로직에 영향없이 개발하기 위함이다.

 

 

4. Spring은 DI를 지원한다.

 - DI란 Dependency Injection의 약어로, 의존성 주입을 뜻한다.

 - 다른 곳에서 가져다 쓸 수 있도록 한다. => Spring에서 Singleton Pattern으로 접근하기 쉽다.

 

 

5. Spring은 여러 Filter를 가지고 있다.

  • Complie Checking
  • Annotation(주석+힌트) - 컴파일러가 무시하지 않음
  • // (주석) - 컴파일러가 무시한다.

 

 

6. Spring은 여러 Annotaion을 가지고 있다. - Reflection, Compile Checking

 Spring은 Annotation을 생성한다.

 - @Component : 클래스를 메모리에 로딩해라

 - @Autowired : 로딩된 객체를 해당 변수에 넣어라

 

 

7. Spring은 MessageConverter를 가지고 있다. - 기본값: JSON(현재)

 - 예를 들어, Java를 Python으로 전달하려면 중간 언어가 필요하다. 이때 중간 언어는 현재 JSON이다.(예전에는 xml을 주로 사용)

  - JSON(Javascript Object Notation) : 사람이 읽을 수 있는 텍스트를 사용하여 데이터를 저장하고 전송하는 데이터 공유를 위한 개방형 표준 파일 형식

 - JSON의 형태 : {"K":"V"}

 {
    "apple":"사과",
    "banana":"바나나",
    "cranberry":"크랜베리"
}

 

 

8. Spring은 BufferedReader와 BufferedWriter를 쉽게 사용할 수 있다.

 - @RequestBody => BufferedReader가 동작

   @ResponseBody => BufferedWriter가 동작

 - BufferedWriter는 요즘 PrintWriter로도 많이 쓰인다.

  - PrintWriter는 print(), println() 등을 제공한다.

 

 

 

출처: 인프런 - 최주호, 스프링부트 개념정리(이론)

반응형