1. 스프링 부트란?
8. Introducing Spring Boot
Spring Boot makes it easy to create stand-alone, production-grade Spring-based Applications that you can run. We take an opinionated view of the Spring platform and third-party libraries, so that you can get started with minimum fuss. Most Spring Boot applications need very little Spring configuration.
You can use Spring Boot to create Java applications that can be started by using
java -jar
or more traditional war deployments. We also provide a command line tool that runs “spring scripts”.
Our primary goals are:
Provide a radically faster and widely accessible getting-started experience for all Spring development.
Be opinionated out of the box but get out of the way quickly as requirements start to diverge from the defaults.
Provide a range of non-functional features that are common to large classes of projects (such as embedded servers, security, metrics, health checks, and externalized configuration).
Absolutely no code generation and no requirement for XML configuration.
출처: https://docs.spring.io/spring-boot/docs/2.0.3.RELEASE/reference/html/
영어다.. 다음에 알아보자..
하지만 난 의지의 한국인이니 번역기를 돌려보자!!
모든 스프링 개발을 위해 매우 빠르고 폭넓게 액세스 할 수 있는 시작 경험을 제공합니다.
설정을 일일이 설정하지 않아도 설정을 제공해 줍니다 하지만 사용자가 원하는 대로 설정을 쉽고 빠르게 변경 가능합니다.
많은 종류의 프로젝트(예: 내장형 서버, 보안, 메트릭, 상태 점검 및 외부 구성)에 공통적으로 사용되는 다양한 비기능적 기능을 제공합니다.
코드 생성도 없고 XML 구성도 필요하지 않습니다.
그렇다고 한다.
간단하게 말해 쉽고 편하다 그럼 사용해보자.
2. 스프링 부트 프로젝트 만들기
1. start.spring.io 에서 프로젝트 생성하기
a. 프로젝트 빌드 툴을 선택 가능
- 메이븐, 그래 들
b. 언어 선택 가능
-java , kotlin , Groovy
c. Dependencies 선택 가능
-web , JPA ETC..
d. group id와 Artifact
Groupid와 Artifact는?
Groupid
groupid는 프로젝트마다 접근할 수 있는 고유한 이름을 정의
groupId는 package 명명 규칙을 따르도록 한다 하위 그룹은 얼마든지 추가할 수 있다
com.naver.maven , com.naver.gradle
프로젝트 구조를 사용하면 잘 구분되는 groupId를 만들 수 있다.
com.naver.maven.report, com.naver.maven.plugin
Artifact
일반적으로 소프트웨어 분야에서의 artifact는 소프트웨어 개발 프로세스에 의해 생산되는 무언가를 의미한다. 소프트웨어와 관련된 문서나 실행 파일이 될 수 있을 것이다.
maven에서 artifact 란 용어는 메이븐 빌드의 결과로 얻을 수 있는 일반적인 jar 나 war 또는 여타의 실행 파일을 의미한다. maven에서 artifact는 시스템의 groupId, artifactId, version 에 의해 구분되며 이는 빌드시 필요한 의존성(일반적으로 다른 jar 파일들)을 구분하는 데 사용된다.
추가로 Version
숫자와 점으로 이루어진 일반적인 버전 형태를 사용한다(1.0, 1.1, 1.0.1, …).
버전에 SNAPSHOT이 포함될 경우 배포 시마다 최종 버전을 체크해서 업데이트해준다고 한다.
*빌드 시 마다가 아닌 DAILY 기준
선택 후 Generate Project 클릭하면 프로젝트 생성 완료
2. IDE에서 생성
a.Spring initializr
b.Maven
c.Gradle
본인이 편한 방식을 프로젝트를 생성하면 된다.
난 메이븐이 편함으로 메이븐으로!
https://docs.spring.io/spring-boot/docs/1.4.1.RELEASE/reference/htmlsingle/#using-boot-maven
<parent>를 이용해 spring-boot-starter-parent를 상속하는 이유는 스프링 부트의 의존성 관리를
지원받기 위해서다
즉 지원받을 필요 없거나 직접 설정할 수 있다면 상속받을 필요가 없다. 다만 상속받는 것이 겁나 편하다.
스프링 부트를 사용하는 가장 원초적 이유가 편하고 쉽다 라는 것을 생각해봤을 때..
특별한 이유가 없다면 상속받는 게 좋은 것 같다.
spring-boot-starter-parent 관한 자세한 내용은 해당 블로그를 참고 하자. http://eglowc.tistory.com/38
추가로 내장 톰캣 및 웹 구축을 편하게 하기 위해
spring-boot-starter-web를 추가한다.
https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web/2.0.5.RELEASE
spring-boot-starter-web는 RESTfully, Spring MVC를 사용하는 애플리케이션을 포함한 웹 구축용 Starter. Tomcat을 기본 내장형 컨테이너로 사용
거의 다 온 것 같다.
스프링을 실행시킬 클래스를 하나 만들자.
이름은 크게 상관없다. 나는 Application.java로 만들었다.
@SpringBootApplication 어노테이션을 이용해 스프링 부트를 실행할 파일 이란 것을 정의해 줍니다.
@SpringBootApplication 어노테이션을 추가하면 아래의 어노테이션이 자동으로 포함
@Configuration
현재 클래스가 설정 파일임을 정의해주는 어노테이션
@EnableAutoConfiguration
스프링 부트 클래스 경로 세팅 및 Bean을 추가시켜 주는 어노테이션
@ComponentScan
다른 컴포넌트, 서비스 및 설정 등을 찾게 도와주는 어노테이션
main 메서드를 생성한 후
SpringApplication.run(Application.class,args);
라고 작성해 주고 서버를 실행하면 스프링 부트가 정상 작동하는 것을 확인할 수 있다.
추가로!
Application.java 위치에 관한 내용
최상위 패키지 구조에 등록을 해야한다.
@SpringBootApplication에 포함된 @Componet 어노테이션은 빈으로 등록할 수 있는 모든 것을 빈으로 등록하기 때문에 최상위가 아닌 java 패키지 바로 아래 파일이 등록될 경우 빈으로 이용할 수 있는 모든 것을 우리가 원하지 않아도 등록해 버린다.
그러므로
com.naver.maven 상위 패키지에 등록을 하는 것이 좋다.