2024/01/17 til

원녕·2024년 1월 17일
0

TIL

목록 보기
10/21

#스프링은 무엇인가?

스프링 프레임워크, 스프링 부트, 스프링 데이터, 스프링 세션, 스프링 시큐리티, 스프링 rest docs, 스프링 배치 , 스프링 클라우드등이 있음

스프링 프레임워크 ? 스프링의 핵심
스프링 부트 ? 스프링의 모든 것들을 편리하게 사용할수 있도록 만들어주는 기술
스프링 데이터란 ? 기본적인 CRUD는 데이터베이스끼리 다 비슷한데 좀더 편리하게 사용할수 있도록 도와주는 기능

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

스프링 시큐리티 ? 보안 관련

스프링 rest docs ? Api문서와 테스트를 엮어서 편리하게 만들어주는 기능

스프링 배치 ? 배치처리라는 용어를 먼저알아야함

베치처리 : 대용량의 데이터를 한번에 실시간으로 처리하기 어렵기때문에 예를들어 1000건의 데이터가 있다면 100건의 데이터를 먼저
퍼올리고 저장하고 다음 순서의 데이터를 또 퍼올리고 저장하는 서순의 처리방식

즉, 스프링 배치는 배치처리를 편리하게 할수있도록 도와주는 기능

스프링 클라우드 ? 클라우드에 특화된 기능

#스프링 프레임워크


참고 : 강의url https://www.inflearn.com/course/lecture?courseSlug=%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8&unitId=55328

강의는 핵심 기술에서 서술되고 나머지는 핵심 기술에서 파생되었다고 보면됨.

#스프링부트를사용하는이유


단독으로 실행할수있는 스프링 어플리케이션을. 쉽게 설명. : 과거 => 빌드, 톰캣 설치, 톰캣 서버의 특정 위치에다가 빌드된 걸 넣는. 복잡한 구조
현재 => 빌드하고. 서버 띄우기까지 가능 (톰캣 설치 불필요)

손쉬운 빌드 구성을 위한 starter 종속성 제공 =>
과거 : 어떤 라이브러리를 쓰려면 관련 라이브러리에 대한걸 다 가져다 썼어야함
현재 : 나머지 라이브러리까지 다 떙겨줌

#스프링과 서드파티 라이브러리 자동구성

스프링부트 궁합 (버전 충돌)문제해결, 버전을 다 챙겨서줌(버전이 충돌나지않는지 테스트해줌)

#메트릭,상태확인,외부구성같은 프로덕션 준비 기능 제공

기본적으로 스프링 부트가 제공, 메뉴얼을 보고 조금 설정하는 정도

스프링부트 자체만으로 개발은 불가능함. 스프링프레임워크에서 편의한 기능을 담고있는것이 스프링부트지
스프링부트 자체가 스프링프레임워크를 대신한다고 생각하면안됨. 스프링프레임워크를 당겨오는 것임

#스프링 단어

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

#스프링은 왜만들어졌나요?

웹 어플리케이션 만들고,DB접근 편의성 => 핵심 x 결과물
자바 언어 기반의 프레임워크 => 객체지향 언어가 가진 강력한 특징을 살렸음
좋은 객체 지향 어플리케이션을 만들도록 도와주는 프로그램이기 때문에 => 핵심o
과거 EJB에 의한 의존적 개발 => 객체지향이 가지는 좋은 장점들을 잃어버림

#좋은객체지향은 무엇인가?

객체지향 프로그래밍의 사전적 의미

객체지향 프로그래밍 : 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 “객체”들의 모임으로 파악하고자 하는것.
각각의 객체는 메시지를 주고받고 데이터를 처리할수있다(협력관계)
프로그래밍을 유연하고 용이하게 만들기떄문에 대규모 소프트웨어 개발에 많이 사용됨
유연하고 용이하게 만들어주는 것 => 다형성
#다형성의 실세계 비유

역할과 구현으로 세상을 구분
역할(인터페이스) 구현 (구현객체)
운전자 - 자동차

운전자는 자동차종류가 바뀌어도 운전에 큰 영향을 주지않음
왜? 자동차라는 역할의 인터페이스가 만들어져있기떄문에
자동차의 종류가 달라진다한들 약간의 구현객체만 수정되고 달라질뿐 크게 차이가 나지않음
운전자 (클라이언트)는 자동차가 달라져도 직접적인 영향을 받지않고 동시에 운전자가 바뀔 필요도 없음.
운전자의 대체 가능성 => 유연함,용이함
즉, 클라이언트는 내부구조에 영향을받지않고 혹은 대상이 변경되어도 역할에 따라서 작업을 수행만 하면
구현객체를 통해서 구현을 할수 있도록 짜여진 구조.

profile
메타인지하는 개발자

0개의 댓글