스프링 개념잡기
- 스프링은 프레임워크이다.
- 스프링은 오픈소스이다.
- 스프링은 IoC 컨테이너를 가진다.
- 스프링은 DI를 지원한다.
- 스프링은 다수의 필터를 가지고 있다.
- 스프링은 엄청나게 많은 어노테이션을 가지고 있다. (리플렉션, 컴파일체킹)
- 스프링은 MessageConverter를 가지고 있다. 기본값은 현재 json이다.
- 스프링은 BufferReader와 BufferedWriter를 쉽게 사용할 수 있다.
컴파일체킹
컴파일 체킹이라는 개념을 알기 위해선 '어노테이션' 개념을 알아야 한다. 일반적인 주석(//)은 컴파일러가 무시하지만, 어노테이션은 (주석 + 힌트)의 결합으로 컴파일러가 무시하지 않는다.
예를 들어 Aniaml 클래스의 run() 메소드를 Animal을 상속받는 Dog 클래스에서 @override run();을 하면 컴파일시 Aniaml 클래스의 run() 메소드가 있는지 확인한다.
스프링에서는 주로 어노테이션으로 객체를 생성한다.
ex)
@component -> 클래스를 메모리에 로딩하라
@Autowired -> 로딩된 객체를 해당 변수에 집어 넣어라
- 스프링은 메서드, 필드, 어노테이션을 런타임 시 리플렉션(분석)한다.
- IoC(Inversior of Controll) 제어의 역전 - 주도권이 개발자가 아닌 스프링에게 있다. 컴포넌트 스캔을 통해 싱글톤 패턴과 레퍼런스 변수를 스프링이 관리한다.
- 자바 object -> MessageConverter: Jackson <-> Json request(요청) -> 파이썬 프로그램
이렇게 스프링은 IoC 컨데이터를 가지고, DI(Dependency Injection)를 지원한다. 요청과 응답이 이뤄질 때 자동으로 JSON으로 변환해주는 MessageConverter 라이브러리가 존재한다.