Spring이란?

JinjuLog·2021년 2월 16일
0

Spring Framework

목록 보기
1/8
post-thumbnail

1. Spring이란?

스프링은 프레임 워크다.

Framework : 틀안에서 동작한다.

Framework 특징

  • 개발자들이 따라야 할 가이드라인을 가진다. 시스템의 통합성과 일관성을 높이는 대신 개발자의 자유가 제한된다
  • 컴포넌트 재사용 가능
  • 컴포넌트 재사용 가능
  • 추상적인 개념들의 문제를 해결하기 위해 같이 작업하는 방법을 정의
  • 개발할 수 있는 범위가 정해져있다.
  • 개발자들을 위한 다양한 도구들이 지원된다.

스프링은 오픈소스이다.

오픈소스는 소스가 공개되어있는것으로 내부를 보고 수정할 수 있다.

스프링은 IoC 컨테이너를 가진다. (스프링의 핵심)

IoC (inversion of controll) : 제어의 역전으로 주도권이 스프링에 있다.
개발자가 object를 직접 new해서 heap이라는 공간에 올리게 되면, 해당 주소 는 래퍼런스 변수 s로 해당 메서드 내부에서 관리하게 된다. 이렇게 되면 나중에 같은 s를 다른 메서드에서 사용하기 로직이 복잡하다.
이러한 것들을 스프링이 다양한 객체들을 읽어서 heap 메모리에 올려준다.

🔸 개발자가 직접 원하는 곳에서 new를 해서 주소를 관리했다면 이제는 스프링이 객체를 스캔하여 메모리에 올렸기 때문에 개발자가 관리하는 것이 아니라 스프링이 관리해준다.

스프링은 DI를 지원한다.

DI (Dependency Injection) : 의존성 주입
스프링이 관리하는 객체들을 어디서든지 가져다가 사용할 수 있는것을 DI라고 한다.
어디서든지 동일한 객체를 사용할 수 있으므로 싱글톤으로 관리할 수 있다.

스프링은 많은 필터를 가지고 있다.

스프링 자체가 기본으로 가지고 있는 필터가 있다. 직접 필터 생성 가능
(filter/web.xml) 톰캣 -> (인터셉터/AOP) 스프링 컨테이너

스프링은 많은 어노테이션을 가지고 있다. (리플렉션, 컴파일체킹)

어노테이션 (주석 + 힌트) : 컴파일러가 무시하지 않음.
ex) @Override 컴파일할때 체크하고 상위 클래스에서 메소드를 확인하게 함. (컴파일 체킹)

스프링에서는 어노테이션을 통해서 객체 생성을 한다.
ex)
@Component - 클래스 메모리에 로딩
@Autowired - 로딩되니 객체를 해당 변수에 넣기

class B{
 @Autowired
 A a;
 }

분석(리플렉션)을 통해서 특정 클래스 내부에 있는 메서드, 필드, 어노테이션을 체킹 가능하고 IoC를 통해서 A객체가 heap에 올라왔다면 class B에 a에 DI를 통해 변수에 객체 주입.

🔸 어노테이션은 주석+힌트, 리플렉션은 클래스를 분석하는 기법으로 runtime때 분석한다.

스프링은 MessageConverter를 가지고 있다.

내가 직접 converter 할 필요없이 json이 대신 해준다. 요청/응답 시 모두 동작
중간언어 : xml -> json (기본값)
ex) 자바 object <-> json <-> 파이썬 object

스프링은 BufferedReader와 BufferedWriter를 쉽게 사용할 수 있다.

InputStreamReader를 BufferedReader로 감싸서 가변길이 문자로 받기.
BufferedWriter -> PrintWriter 사용(내려쓰기 가능)
@ResponseBody : Bufferdwriter 동작
@RequestBody : BufferedReader 동작

💡 SpringFramework

  • 핵심기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타
  • 웹 기술 : 스프링 MVC, 스프링 WebFlux
  • 데이터 접근 기술 : 트랜잭션. JDBC, ORM 지원, XML 지원
  • 기술 통합 : 캐시, 이메일, 원격접근, 스케줄링
  • 테스트 : 스프링 기반 테스트 지원
  • 언어 : 코틀린, 그루비
  • 최근에는 스프링 부트를 통해서 스프링 프레임워크의 기술들을 편리하게 사용

💡 Springboot

스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용

  • 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성
  • Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨
  • 손쉬운 빌드 구성을 위한 starter 종속성 제공
  • 스프링 3rd parth(외부) 라이브러리 자동 구성
  • 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공
  • 관례에 의한 간결한 설정

💡 왜 이 기술을 만들었을까? 스프링의 핵심 개념

  • 스프링은 자바 언어 기반의 프레임워크
  • 자바 언어의 가장 큰 특징 - 객체 지향 언어
  • 스프링은 객체 지향언어가 가진 강력한 특징을 살려내는 프레임워크
  • 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크

0개의 댓글