스프링 부트는 스프링을 기반으로 실무 환경에 사용 가능한 수준의 독립실행형 애플리케이션을 복잡한 고민 없이 빠르게 작성할 수 있게 도와주는 여러가지 도구의 모음이다. 즉 고민없이 빠르게 코드 작업을 하게 해주는게 스프링 부트이지만 그렇다고 내가 사용하는 기술이 무엇인지 자세히 모르고 그냥 생각없이 코드를 치는건 과연 좋은 개발자일까?? 이런 생각을 하자!! 내가 하는 일에 무슨 생각을 하고 어떤 방식으로 하는지 알고가자 왜? 난 아직 아무것도 모르는 바보니까.
####Containerless
Containerless?? 컨테이너 없는 구조를 원한다??
위 사진을 보면 서블릿 컨테이너가 있다. 서블릿 컨테이너가 무엇이냐? 간단하게 사용해본것으만 말하자면 톰캣이다. 톰캣에 안에 XML파일에 들어있는게 서블릿들이며 자바로 개발하는 사람들은 저 XML부터 신경을 써야하는 작업이 있다. 그리고 톰캣을 사용안하는 곳은? 또 다른 구조의 서블릿 컨테이너를 배워야하며 개발을 하는건지 개발을 하기위해 준비과정만 공부하는건지의 문제점을 접하게 된다.그래서 생각한게 Containerless이다.
위 사진을 보면 서블릿 컨테이너가 분명있다. 근데 흐릿하게 되어있죠? 스프링 부트로 개발을 하게 된다면 서블릿 컨테이너를 설계하는 시간을 획기적으로 줄일 수 있게 된다. 그렇다 보니 저 설계하는 시간에 코드 작업을 하게 되며 그리고 스프링 부트에서 제일 중요한 !!메인메서드!!를 호출하게 된다면 전체 즉 서블릿 컨테이너 부분마저도 스프링 부트가 동작을 하게 해 줌으로써 개발을 바로 할 수 있고 이것을 독립실행형 애플리케이션이라고 한다.
Opinionated를 알기 전에 스프링 프레임워크의 설계 철학을 알아보자
스프링부트의 저만의 해석을 한번 해보겠습니다. 스프링 부트는 내가 만들고자하는 프로그램에 들어가는 기술들의 큰틀만 정해졌다면 그안의 최적화는 스프링 부트가 해준다. 여기서 규칙이 정해졌다고 생각할 수 있다. 그래서 세부적인 내용을 바꾸는데 힘들 수 있다고 생각이 들것이다. 근데 스프링 부트는 어디서 가져왔냐? 스프링이다 스프링의 장점 유연함 그것이 스프링 부트에 포함 되어있다는것이다. 그래서 세부사항을 바꾸고 싶을때에는 스프링의 장점을 가지게 된다.!!
사용이 쉽다는 장점이 있지만 결코 쉽게 쉽게 할 수있어도 개발자는 쉽게하돼 생각은 쉽게하지말자!! 어떤 기술인지 알고 개발하자!!!