ㅁ 스프링부트(Spring boot) - HeegonKim/IT-Info GitHub Wiki

스프링 부트란 무엇인가..

일단 나도 공부하고있는 입장이고하니 문제가 있다면 지적 바랍니다.

스프링 부트의 핵심은 메이븐은 pom.xml, 그레이들은 build.gradle 파일 내용에 따라 클래스 패스, 어노테이션, 기타 자바구성클래스를 보고

자동구성하는것입니다.

간혹 스프링부트와 스프링 프레임워크를 별개로 생각하시는분들이 존재하긴 하지만 별개가 아닙니다.

스프링 부트는 스프링이라는 자바 프레임워크의 프로젝트를 말하며 이를 사용하면 쉽게 애플리케이션을 만들 수 있습니다.

스프링 프레임워크는 2003년에 등장한것으로 기억하고 있습니다.

그때 당시만해도 J2EE 기반의 EJB 프로젝트와는 다르게 가볍게 동작하도록 제작된 프레임워크였으나 (경량성을 강조)

현재에 와서는 개발이 활발해지면서 점차 이녀석도 무거워졌습니다.

또한 지원해주는 라이브러리(하위 프로젝트)가 점차 늘어나서 방대해져서 초기 설정시 많은 어려움이 있었습니다.

예를들어 웹애플리케이션을 개발하고자 할때 어느 라이브러리를 추가해줘야하는건가?

초 중급 개발자로써는 너무 방대하기에 일일히 찾아보면서 하기에는 시간이 많이 걸리고 노하우가 필요한작업이였습니다.

유지보수 하기에는 좋은데 초기 개발 환경설정이 너무 힘들었습니다.

즉 스프링 부트는 자주 사용하는 프로젝트 조합을 미리 만들어놓아 스프링을 더욱 쉽고 간단하게 사용하기위해서 만들어졌습니다.

스프링 부트 특징

  1. 자주사용하는 프로젝트 조합을 미리 만들어놨습니다.

일일히 라이브러리를 찾으면서 추가해줄필요없이 spring-boot-starter-web을 Maven 설정만해주면 관련라이브러리를 받아옵니다.

  1. 설정을 자동으로 수행합니다.

@Enableautoconfiguratio 어노테이션의 같은경우 자동설정해주는 녀석으로 스프링부트의 마법이라고 불리웁니다.

비슷한 어노테이션으로 @SpringBootApplication 이 있는데

이것은 // @Configuration + @EnableAutoConfiguration + @ComponentScan 3가지 묶음으로 더욱 강력해진녀석입니다.

설정을 자동으로 수행한다.. 이게 이해가 좀 안가실수도 있는데 예로들자면

ex) @RequestMapping이 달려있는 모양새를 보고 스프링 부트는 spring-boot-starter-web 필요함을 알아채고 자동 설정합니다.

@Enableautoconfiguratio은 필요한 빈을 유추해서 구성하는 어노테이션(클래스) 자동구성 클래스는 클래스패스 및 앱에 정의한 빈에따라 적용여부가 결정되어 META-INF/spring.factories라는 파일에 프로퍼티 형식으로 열거된 구성 클래스를 읽어 List 로 반환하여 자동 설정해주는 녀석입니다.

기존에 스프링프레임워크에서 필요했던 설정파일이 필요없게 되는거죠..

  1. 서버를 포함하고 있습니다.

Tomcat 내장서버를 포함하고 있어 SpringApplication.run(App.class, args); 명령어로 서버를 시작할수 있습니다. 기존에 톰캣을 설치하여 이클립스 연동하는작업이 없어졌습니다.

출처: http://zanywitch.tistory.com/91 [엉뚱한 마녀의 상상!?]