선 조치 후 분석

[Spring] Spring Framework - 핵심 원리 (1) - 스프링이란? + 객체 지향?, 스프링에 열광하는 이유? 본문

Framework/Spring Framework

[Spring] Spring Framework - 핵심 원리 (1) - 스프링이란? + 객체 지향?, 스프링에 열광하는 이유?

JB1104 2022. 1. 5. 22:35
728x90
반응형
SMALL

 

 

 

스프링 종류

 

이것 이외에도 엄청 많은 프로젝트가 있다. 

https://spring.io/projects

 

Spring | Projects

Spring Framework Provides core support for dependency injection, transaction management, web apps, data access, messaging, and more.

spring.io


 

스프링 프레임워크

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

 

 

 

 

 

스프링 부트

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

 

※ 참고!!

스프링 부트는 스프링 프레임워크를 사용해서 필요한 기술들을 당겨서 사용하는 것이지, 단독으로 사용하는 것이 아니다!

 


 

스프링이라는 단어는 문맥에 따라 다르게 사용된다.

  1. 스프링 DI 컨테이너 기술
  2. 스프링 프레임워크
  3. 스프링 부트, 스프링 프레임워크 등을 모두 포함한 스프링 생태계

 

☆★그러면 스프링은 왜 만들었을까?☆★

 

로드 존슨의 3만 줄 코드에서 시작했다. 거기서 '핵심 콘셉트'는 무엇이었을까?

단순하게 API 사용법만 안다고 '스프링'을 잘하는 게 아니다, '핵심 콘셉트'를 알아야 잘하는 것이다!

 

스프링의 핵심?

1. 웹 애플리케이션을 만들고, DB 접근 편리하게 해주는 기술?

2. 전자정부 프레임워크?

3. 웹 서버도 자동으로 띄워주고?

4. 클라우드, 마이크로 서비스?

 

이건 단순히 결과물에 불과하다.

 

스프링의 진짜 핵심

1. 스프링은 자바 언어 기반의 프레임워크

2. 자바 언어의 가장 큰 특징 : 객체 지향 언어

3. 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크

4. 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크

 

 

당시 'EJB'에 종속돼서 개발을 하면 '객체지향의 좋은 장점'들을 잃어버렸다. 

하지만 '스프링'의 'DI 컨테이너'는 '객체지향'의 장점을 살려주기 때문에 많은 개발자들이 '스프링'에 열광했다고 한다!

 

그럼 '좋은 객체 지향'은 뭘까? 이걸 먼저 이해하는 게 '스프링'의 기본이라고 한다.

728x90
반응형
LIST