스프링 시작하기
https://start.spring.io/
해당 사이트에서
스프링부트의 버전, 언어 , dependency등을 선택하여 쉽게 스프링 프로젝트를 생성하여 시작할 수 있다.
강의를 따라 다음과 같이 생성하였다.
Project
maven(메이븐)과 gradle을 선택하는 부분이다.
둘다 빌드관리 도구이고 간단하게 알아본 결과 다음과 같다.
참고 https://dev-coco.tistory.com/65
Maven
- POM(Project Object Model) 이라는 프로젝트 객체 모델을 가지고있는 파일을 이용한다. => pom.xml
Gradle
- 빌드속도가 maven보다 10~100배 가량 더 빠름
- 요즘 대세임
- build.gradle파일의 가독성이 pom.xml보다 좋고 스크립트 길이가 훨씬 짧다.
고로 Gradle을 선택하여 진행한다.
Spring Boot
버전을 선택하는 부분이고 Snapshot이라던지 m5이런게 붙은거는 아직 개발중인 느낌이고
안정적인 최신버전은 자동으로 선택되어있다. 그냥 진행하면된다.
Project Metadata
metadata란 데이터에 관한 구조화된 데이터로 , 다른 데이터를 설명해주는 데이터 즉 데이터에 대한 데이터이다.
그렇다면 Proeject Metadata는 프로젝트에 관한 정보라고 생각하면 될듯하다.
Packaging
어플리케이션을 쉽게 배포하고 동작시킬수 있도록 패키징 방식을 정하는 부분이다.
jar는 .jar의 압축파일형식을 가지고 압축을 따로 해제하지 않아도 JDK(java development kit)에서 접근하여 사용이 가능하다고 한다.
기본적으로 jar가 선택되어있으므로 jar로 진행한다.
jar와 war의 자세한내용은 아래 블로그에서 살펴본다.
https://velog.io/@maldaliza/JAR-WAR%EB%9E%80
https://hye0-log.tistory.com/27
Dependencies
이 부분에서 원하는대로 dependency를 추가해줄수있다.
여기서는 강의내용를 따라서 Spring web (웹프로젝트를 만들기 위해서)
Thymeleaf(타임리프)라는 뷰 템플릿 엔진을 추가했다. ( 백엔드쪽에서 클라이언트에게 응답할 브라우저 화면을 만들어 주는 역할)
타임리프에 관한 자세한 정보는 다음 블로그를 참조하자.
https://maenco.tistory.com/entry/Thymeleaf-Thymeleaf%EB%9E%80
https://myeongdev.tistory.com/20
설정완료 후 Generate를 누르면 압축파일이 다운받아진다.
압축을 풀고 인텔리제이에서 해당 폴더를 열면 프로젝트를 시작할 준비가 된것이다.
build.gradle
build.gradle 파일안에 코드를 대략적으로 살펴본다.
plugins {
id 'org.springframework.boot' version '2.7.4' // start.spring.io에서 선택한 스프링부트 버전
id 'io.spring.dependency-management' version '1.0.14.RELEASE' // 사용하는 스프링부트에 버전에 따라 의존성 관리를 해주는 부분
id 'java' // 언어선택 자바했던거
}
group = 'hello' // 프로젝트 메타데이터에서 그룹네임 지정했던것
version = '0.0.1-SNAPSHOT' // ?
sourceCompatibility = '11' // 자바 버전 선택했던 부분 , compatibility ->호환성 , 자바 11버전선택했었믐
repositories {
mavenCentral() // 디펜던시 추가했던 starter- ~ 라이브러리들을 가져오기위한 곳
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' //thymeleaf 선택했던거 라이브러리를 가져오는부분.
implementation 'org.springframework.boot:spring-boot-starter-web' // 스프링부트 웹 선택했던거
testImplementation 'org.springframework.boot:spring-boot-starter-test' // 테스트 라이브러리는 자동으로 추가된다.
}
tasks.named('test') {
useJUnitPlatform()
}
plugins
플러그인 이란 특정작업을 하기위해 모아놓은 Gradle Task들의 묶음이다.
위에서는 스프링프레임워크 ,스프링 의존성관리 부분의 대한 플러그인 , 자바 플러그인 이 추가되어있다.
참고
repositories
각종 의존성(dependency,= 라이브러리)들을 어떤 원격저장소에서 받을지 정해주는 부분.
또는 오픈 소스 라이브러리를 호스팅하는 저장소라고 설명할 수 있다.
참고
https://jhy156456.tistory.com/entry/Android-maven-jcenter-vs-mavenCentral
build.gradle과 다른 설정파일은 추가적인 공부가 필요해보인다.
어플리케이션 실행해보기
HelloSpringApplication 파일을 Run해보면
다양한 정보가 Run탭에 뜨는데 여기서 스프링부트가 8080포트로 실행됬음을 알 수있고
웹브라우저에서 localhost:8080 또는 127.0.0.1:8080을 치면
이런 페이지가 나오면 잘 실행되고있다고 알면된다.
스프링부트 어플리케이션
package hello.hellospring;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication // 스프링부트어플리케이션 어노테이션
public class HelloSpringApplication {
public static void main(String[] args) {
SpringApplication.run(HelloSpringApplication.class, args);
// 스프링어플리케이션 클래스를 매개변수로 받는 해당 명령어를 실행하여 스프링부트를 어플리케이선을 실행한다.
}
}
스프링부트는 톰캣을 내장하고있고 스프링부트 어플리케이션을 실행할때 같이 실행된다고 한다.
번외 ) 프로젝트 설정 팁
Files -> Settings -> gradle검색 후 아래사진과 같이 설정
Gradle을 통해서 실행하면 좀 느린데 인텔리제이로 바꿔주면 자바로 실행시켜줘서 훨씬 빨리
스프링부트 어플리케이션이 실행된다고 한다!!
(프로젝트마다 설정해줘야함)
라이브러리 살펴보기
dependency를 보면 지금 3가지밖에 가져오지않았지만
실제로 가져와진 라이브러리를 살펴보면 (External Libraries)
엄청 많다.
우리는 3가지정도만 가져오려고했지만 이렇게 많은 이유는
예를들어
implementation 'org.springframework.boot:spring-boot-starter-web'
이렇게 starter-web만 가져온다하더라도
starter-web은 tomcat이라던지와 같은 다른 라이브러리를 의존하기때문에 의존성이 있는 관련된 모든 라이브러리를 끌어다 오고 그 끌어다온 라이브러리에 의존적인 라이브러리를 끌어다오기때문에
external libraries에 뭔가 가득한것이다.
Gradle 탭에서 라이브러리들의 의존성을 확인할 수 있다.
build.gradle에서 3가지만 implementation했는데 그 각각의 라이브러리들과 의존관계라서 가져온것들과
그 의존관계인 라이브러리가 다른 라이브러리와 의존관계라서 가져온것들을 확인할수 있는부분이다.
(*)모양된것은 중복이기 때문에 그렇게 보이는것.
'인프런 > 스프링 입문' 카테고리의 다른 글
6)스프링 빈과 의존관계, 스프링 빈 등록방법 1. 컴포넌트 스캔 2. 자바로 직접 등록 (0) | 2022.11.11 |
---|---|
5)회원 서비스 만들기(회원가입..등),테스트하기,static변수특징,생성자사용하기,인터페이스객체,의존성주입 (0) | 2022.10.29 |
4)비즈니스 요구사항 정리,회원도메인,회원 리포지토리생성,테스트코드생성,테스트해보기 (0) | 2022.10.12 |
3. 스프링 웹 개발 기초(정적컨텐츠,mvc와 템플릿엔진,API) (0) | 2022.10.03 |
2. View 환경설정, welcome page 만들기,컨트롤러 생성, 웰컴페이지가 보이는 동작방식 , 콘솔에서 실행방법 (0) | 2022.10.03 |
댓글