본문 바로가기
Spring/Spring

Spring 개념

by 불면증김씨 2022. 1. 13.
  • 프레임워크이다.
  • 오픈소스이다.
  • IoC컨테이너를 가진다.
  • DI를 지원한다.
  • 많은 필터를 가지고 있다.
  • 많은 어노테이션을 가지고 있다.
  • MessageConverter를 가지고 있다. (기본값은 현재 Json이다.)
  • BufferedReader와 BufferedWriter를 쉽게 사용할 수 있다.
  • 계속 발전중이다. 

 

                  [1] 프레임워크                 

틀을 벗어나지 않고, 만들 수 있게 해준다. 초보도 일정 수준에 작업을 가능하게 한다.

 

 

                             [2] 오픈소스                              

소스코드가 공개되어있다. -> 내부를 볼 수 있다. -> 코드를 뜯어 고칠 수 있다.

 

 

               [3] IoC(Inversion of Control) 역전의 제어              

주도권이 스프링에게 있다.

class - 설계도(의자) / abstract class: 추상적(가구)

object - 실체화가 가능한 것(의자)

instance - 이 세상에 나왔을 때, 실체화가 된 것!(의자)

내가 오브젝트 의자를 new해서 heap이라는 메모리 공간에 올리게 되면 의자를 만든 메서드 내에서 관리하게 된다. 

위에 두 메서드 안에 있는 s 의자는 서로 다른 의자가 된다. 그렇기에 공유가 힘들어진다.

 

그래서 spring은 이런 오브젝트의 공유를 도와준다. 스프링이 오브젝트를 스캔해서 객체들을 heap메모리 공간에 띄운다.

-> 이렇게 개발자가 오브젝트를 관리하는 것에서 스프링이 오브젝트를 관리하는 것이 IoC 제어의 역전이라고 한다.

딱 한번만 메모리에 뜨게 되고, 매번 new하지 않고 같은 객체로 관리할 수 있다.(싱글톤 방식)

클래스의 메소드에서 스프링이 관리하는 같은 오브젝트를 가져와서 사용할 수 있다. 

-> 하나의 오브젝트를 필요한 곳에서 공유하면서 사용할 수 있다. 이를 DI(Dependency Injection)(의존성 주입)라고 한다.

 

 

               [5] 필터             

필터를 문지기라고 생각하면 이해하기 쉽다. Tomcat에 출입 권한을 확인하는 필터는 필터(Filter)이고, web.xml을 가지고 있다.

SpringContainer에 출입 권한을 확인하는 필터는 인터셉터(Interceptor)라고 하며, AOP를 가진다.

 

스프링 자체 필터를 사용하기도 하고, 사용되지 않는 필터를 사용하기도 하고, 직접 필터를 생성할 수도 있다.

 

 

               [6] 어노테이션                

@ - 주석,힌트 <- 컴파일러가 무시X

// - 주석 <- 컴파일러가 무시O

Animal

run()

 

Dog상속 Animal

@override

run()

 

컴파일할때, override가 있으면 Animal에 찾아가서 run()을 확인한다.

만약 fly()메서드를 확인했는데 Animal에 fly가 없다면 에러가 난다.

 

스프링 -> 어노테이션을 이용해서 객체를 생성한다.

@Component -> 약속) 클래스를 메모리에 로딩해

@Autowired -> 약속) 로딩된 객체를 해당 변수에 집어 넣어

 

                 [7] MessageConverter               

서로 언어가 다르기 때문에 메세지를 주고 받을 때, 서로의 언어를 공부해야 한다는 부담이 있다. 그렇기 때문에, 하나의 공통 언어를 지정하고 그 언어로 소통을 하게 된다면 여러 나라의 언어를 공부해야 한다는 부담 없이 굉장히 효욜적이지 않을까?

각 나라의 언어를 공부할 필요 없이 영어라는 하나의 공통 언어를 공부한다면 모든 나라와 소통이 가능하다.

이 처럼 프로그램도 JSON이라는 공통 언어를 통하여 서로 다른 프로그램끼리 데이터를 주고 받을 수 있다.

 

 

                  [8] BufferedReader/ BufferedWriter                     

 

 

 

 

 

'Spring > Spring' 카테고리의 다른 글

스프링 MVC 흐름  (0) 2022.02.01
DI(의존성 주입)  (0) 2022.02.01
스프링의 작동원리(서블릿 컨테이너)  (0) 2022.01.31
Spring의 작동 원리 ( web.xml)  (0) 2022.01.17
Spring의 작동 원리 (http/tomcat)  (0) 2022.01.17

댓글