스프링 부트?

momomoki·2023년 11월 6일
0

스프링부트?

스프링 부트는 스프링을 기반으로 실무 환경에 사용 가능한 수준의 독립실행형 애플리케이션을 복잡한 고민 없이 빠르게 작성할 수 있게 도와주는 여러가지 도구의 모음이다. 즉 고민없이 빠르게 코드 작업을 하게 해주는게 스프링 부트이지만 그렇다고 내가 사용하는 기술이 무엇인지 자세히 모르고 그냥 생각없이 코드를 치는건 과연 좋은 개발자일까?? 이런 생각을 하자!! 내가 하는 일에 무슨 생각을 하고 어떤 방식으로 하는지 알고가자 왜? 난 아직 아무것도 모르는 바보니까.

스프링 부트의 핵심 목표

  • 매우 빠르고 광범위한 영역의 스프링 개발 경험을 제공
  • 강한 주장을 가지고 즉시 적용 가능한 기술 조합을 제공하면서, 필요에 따라 원하는 방식으로 손쉽게 변형가능(빠르고 고민없이 개발이 가능..스프링 부트마다 개발을 쉽게 할 수 있게 큰틀을 준다. 그래서 빠르게 가능하다. 하지만 내가 원하는 필요로하는 기능을 추가로 할 수있다. 빠르게 개발을 가능하게 기본만 준다 기본!!!)
  • 프로젝트에서 필요로 하는 다양한 비기능적인 기술(내장형 서버, 보안, 메트릭, 상태 체크, 외부 설정 방식 등) 제공
  • 코드 생성이나 XML 설정을 필요로 하지 않음(스프링은 XML을 사용했지만 스프링 부트는 XML을 사용을 안하는걸 지향한다.)

####Containerless
Containerless?? 컨테이너 없는 구조를 원한다??

위 사진을 보면 서블릿 컨테이너가 있다. 서블릿 컨테이너가 무엇이냐? 간단하게 사용해본것으만 말하자면 톰캣이다. 톰캣에 안에 XML파일에 들어있는게 서블릿들이며 자바로 개발하는 사람들은 저 XML부터 신경을 써야하는 작업이 있다. 그리고 톰캣을 사용안하는 곳은? 또 다른 구조의 서블릿 컨테이너를 배워야하며 개발을 하는건지 개발을 하기위해 준비과정만 공부하는건지의 문제점을 접하게 된다.그래서 생각한게 Containerless이다.

위 사진을 보면 서블릿 컨테이너가 분명있다. 근데 흐릿하게 되어있죠? 스프링 부트로 개발을 하게 된다면 서블릿 컨테이너를 설계하는 시간을 획기적으로 줄일 수 있게 된다. 그렇다 보니 저 설계하는 시간에 코드 작업을 하게 되며 그리고 스프링 부트에서 제일 중요한 !!메인메서드!!를 호출하게 된다면 전체 즉 서블릿 컨테이너 부분마저도 스프링 부트가 동작을 하게 해 줌으로써 개발을 바로 할 수 있고 이것을 독립실행형 애플리케이션이라고 한다.

Opinionated(내가 정해줄게 넌 개발해~~)

Opinionated를 알기 전에 스프링 프레임워크의 설계 철학을 알아보자

  • 극단적인 유연함 추구
  • 다양한 관점을 수용
  • Not opinionated
  • 수많은 선택지를 다 포용
    이렇다 보니 개발전 설계 단계에서 고민을 많이하게 된다. 쉽게 말해 자유도가 높다는 건 규칙이 없어 난장판이 될 수 있어 규칙을 정하기 힘들다는것이다.
    스프링 부트의 설계철학을 알아보자
  • opionionated => 자기 주장이 강한, 자기 의견을 고집하는 독선적인 즉 틀이 정해져있다.
  • 일단 정해주는 대로 빠르게 개발하고 고민은 나중에
  • 스프링을 잘 활용하는 뛰어난 방법을 제공
    여기서 자기 주장이 강하다. 독선적이다의 의미는 무엇인지 보자
    만들고자 하는 애플리케이션의 버전 기술을 정해주는 것이다.

스프링부트의 저만의 해석을 한번 해보겠습니다. 스프링 부트는 내가 만들고자하는 프로그램에 들어가는 기술들의 큰틀만 정해졌다면 그안의 최적화는 스프링 부트가 해준다. 여기서 규칙이 정해졌다고 생각할 수 있다. 그래서 세부적인 내용을 바꾸는데 힘들 수 있다고 생각이 들것이다. 근데 스프링 부트는 어디서 가져왔냐? 스프링이다 스프링의 장점 유연함 그것이 스프링 부트에 포함 되어있다는것이다. 그래서 세부사항을 바꾸고 싶을때에는 스프링의 장점을 가지게 된다.!!
사용이 쉽다는 장점이 있지만 결코 쉽게 쉽게 할 수있어도 개발자는 쉽게하돼 생각은 쉽게하지말자!! 어떤 기술인지 알고 개발하자!!!

profile
얍얍엽엽욥욥

0개의 댓글