1. 스프링이란

Y_Sevin·2022년 1월 11일
0

spring

목록 보기
1/11

스프링 시작 (11/15)

이걸 왜 알아야할까?

단순히 스프링을 사용하는건 어렵지 않다.. 찾아보면 되니까 하지만 스프링이 제공하는 핵심가치와 원리를 제대로 이해할려면 DI.. IOC...등등 SOILD 객체지향원칙 등을 이해를 해야 스프링의 가치를 파악할수 있다.

목차

  1. 객체 지향 설계와 스프링
  2. 스프링 핵심 원리 이해1 - 예제만들기
  3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용
  4. 스프링 컨테이너와 스프링 빈
  5. 싱글톤 컨테이너
  6. 컴포넌트 스캔
  7. 의존관계 자동 주입
  8. 빈 생명주기 콜백
  9. 빈 스코프

스프링이란??

스프링은 어떤 특정한 하나가 아니라 여러가지 기술들의 모음이라고 할 수 있다.

  • 스프링 데이터 : 데이터베이스 crud를 편리하게 사용할수있도록 도와줌 (스프링데이터 JPA)

  • 스프링 세션 : 세션기능을 편리하게 사용할수있도록 도와줌

  • 스프링 시큐리티 : 보안

  • 스프링 Reat Docs : API문서 관리를 편리하게 해줌

  • 스프링 배치 : 배치처리에 특화된 기술 (배치처리)

  • 스프링 클라우드 : 클라우드 기술에 특화된 기술

  • 등등...

🌱스프링 프레임워크

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

스프링 부트

  • 여러 스프링 기술들을 편리하게 사용할 수 있도록 지원
  • 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성
  • Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨
    • 예전에 스프링으로 프로젝트를 할려면 빌드를 하고 톰캣서버를 설치하고 톰캣서버의 특청위치에 빌드한 프로젝트를 넣고 띄워야했으나 현재는 스프링부트 자체에서 빌드하고 서버띄우는 것까지 지원해줌
  • 손쉬운 빌드 구성을 위한 starter 종속성 제공
    • 예전에는 스프링 프레임워크를 쓰려면 사용하려는 라이브러리를 다 다운받고 dependency 등록 일일이 해줘야했음 (또 서로 호환되는 버전까지 일일이 입력해서 해줘야해서 굉장히 번거로움)
    • 스프링 부트에서는 starter 종속성(라이브러리) 하나만 땡기면, 필요한 나머지 라이브러리까지 같이 땡겨주기 때문에 굉장히 편리함
  • 스프링과 3rd parth(외부) 라이브러리 자동 구성
    • 과거에는 외부라이브러리 사용시 서로 호환되는 버전을 일일이 알아보고 의존해야했다
    • 스프링 부트는 내부적으로 유명한 외부라이브러리 버전별 호환 정보를 다 알고있어서 따로 명시안해주면 알아서 알맞은 버전을 땡겨온다
  • 메트릭, 상태확인, 외부 구성 같은 프로덕션 준비 기능 제공
    • 운영환경에서 모니터링 굉장히 중요한데, 그러한 것들을 스프링 부트가 기본적으로 어느정도 제공해준
  • 관례에 의한 간결한 설정
    • 그냥 스프링 프레임워크만 사용하려면 설정이 굉장히 복잡하다
    • 스프링 부트는 기본적인 것은 디폴트 설정으로 알아서 해주고 필요한 부분만 메뉴얼 보고 변경하면 된다

참고로 스프링 부트는 스프링 프레임워크와 별도로 사용하는 것이 아니다!! 스프링 프레임워크가 제공하는 스프링 데이터 등등 다양한 기능들을 편리하게 사용할 수 있도록 해주는 것이 바로 스프링 부트이다.

스프링 단어?

  • 스프링이라는 단어는 문맥에 따라 다르게 사용된다.
    • 스프링 DI 컨테이너 기술
    • 스프링 프레임워크
    • 스프링 부트, 스프링 프레임워크 등을 모두 포함한 스프링 생태계

핵심 개념

  • 이 기술을 왜 만들었는가?
  • 이 기술의 핵심 컨셉은?

스프링의 핵심 개념, 컨셉?

  • 웹 애플리케이션 만들고, DB접근 편리하게 해주는 기술?
  • 전자정부 프레임워크?
  • 웹 서버도 자동으로 띄워주고?
  • 클라우드, 마이크로 서비스?

이게 핵심 아님, 이런 것들은 다 결과물일 뿐이다

스프링의 진짜 핵심

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

그렇기 때문에, 좋은 객체지향 프로그램이 무엇인지 이해해야 스프링 프레임워크를 제대로 이해할 수 있다.

profile
매일은 아니더라도 꾸준히 올리자는 마음으로 시작하는 개발블로그😎

0개의 댓글