Spring Starter Project 생성
File - Other - spring 검색
Spring Starter Project 클릭 - 마법사 화면 나옴
크롬에서 spring.io 검색 - Projects - Spring Initializr 클릭 → 두 화면 비교해보기 ( 동일함 )
• Service URL : https://start.spring.io = Springboot Starter를 사용하여 프로젝트 생성한다는 의미 ( 수정하면 안됨 )
• Project : 어떤 빌드 관리 도구를 사용할 것인지 설정
- 빌드 관리 도구란? 프로젝트에서 작성한 파일들을 JVM이나 WAS에서 인식할 수 있도록 패키징해주는 도구
* 다이나믹 웹 - 빌드툴(ANT)
컴파일 / 실행파일 만들기 = build
* 스프링 부트 - 프로젝트 관리 툴
컴파일 / 실행파일 / 라이브러리 / 프로젝트 관리 → 2종류의 툴이 유명함
① Maven : 필요한 라이브러리를 땡겨오고 빌드하는 lifecycle까지 관리하는 빌드 관리 도구
→ 라이브러리 수가 많아지면, 빌드 시간이 오래 걸릴 수 밖에 없다.
② Gradle : Maven과 다르게, 필요한 라이브러리에 대한 설정 파일(xml파일)의 코드가 매우 간결한 빌드 관리 도구
→ 최근 많이 사용 / 이미 업데이트가 반영된 부분은 다시 빌드하지 않기에 빌드 시간이 maven에 비해 적어지게 된다.
• Packaging : 어떤 패키징 방식을 사용할 것인지 설정
① Jar (Jar Archieve) : Java Application이 동작할 수 있도록 패키징하는 방식
→ JRE만 있어도 실행 가능
② War(Web Application Archieve) : Web Application 전체를 패키징하는 방식
→ 별도의 Web Server 또는 WAS가 필요함
(라이브러리 파일이 맞지 않을 경우, 실행 안될 수도 있음 )
• Group : 프로젝트를 정의하는 고유한 식별자 정보 (보통 기업의 도메인명 입력)
• Artifact : 버전없는 Jar 파일 이름 → 프로젝트명과 동일하다고 생각해도 됨 (빌드 결과물 이름 의미 )
• Version : 프로그램의 버전을 의미 → 0.0.1 - SNAPSHOT
• Description : 설명
• Package : Group과 동일하다고 보면 됨 → Package >= Group
※ GroupId = Package명
프로젝트명 = ArtifactId = webapp명
아래와 같이 설정한 후, Next 클릭
• Dependencies : 어떤 라이브러리를 사용할 것인지 설정 → 아래 3개의 라이브러리는 항상 기본 설정하기
① Spring Web : Embedded Tomcat 추가를 위함, Web 프로젝트 생성 시 필수
② Lombok : Annotation을 이용해 Compile 시점에 Getter, Setter, 생성자, toString, Builder 등 자동으로 만들어주는 라이브러리
③ Spring Boot DevTools : 소스 수정 시, 스프링 서버를 자동 재시작해주는 라이브러리 ( 중지 후 재실행 할 필요 없음 )
Next - Base Url은 수정하지 않기
Finish 하면, Project Explorer 창에서 생성된 프로젝트 확인 가능
▷ 프로젝트 구조
- src
: main / test로 나뉨
➊ main/java : 실제 패키지들과 소스 파일이 존재
❷ main/resources : 설정 파일들이 존재, java 파일을 제외한 모든 파일 → application.properties 파일 존재 (서버 및 스프링 설정)
❸ main/webapp : webapp 폴더 내에 '/WEB-INF/view' 폴더 생성 → View를 생성하는 jsp 파일이 존재
❹ test/java : test 관련 코드들이 존재
- build.gradle
Spring Starter Project 설정
- build.gradle
plugins {
id 'java' // 선택한 언어
id 'org.springframework.boot' version '2.7.13' // starter에서 선택한 버전
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
id 'war'
}
// Metadata
group = 'org.zerock'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17' // java version
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
// 아래에 선택한 library를 다운로드 받는 곳, 필요하면 특정 사이트로 url 지정 가능
repositories {
mavenCentral()
}
// 선택한 library들
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
// JSP를 가능하게 하는 라이브러리
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
// war 압축파일을 외장 톰캣과 연동하려면 필요한 라이브러리
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
// jsp에서 jstl을 가능하게 하는 라이브러리
implementation group: 'org.glassfish.web', name: 'jakarta.servlet.jsp.jstl', version: '2.0.0'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
• plugins
➊ 프로젝트에서 사용할 플러그인인 스프링 부트 플러그인인 org.springframework.boot 추가
❷ 스프링의 의존성을 자동 관리해주는 spring.dependency-management 추가
• group : 프로젝트를 설정할 때의 기본값인 그룹 이름과 버전 입력
• repositories : 의존성을 받을 저장소 지정 - 기본값인 mavenCentral()로 설정
• dependencies : 프로젝트를 개발하며 필요한 기능의 의존성을 입력
- 스타터로 프로젝트 생성 시 추가했던 3개의 라이브러리 확인 가능
- 이 외에도 Libraries 내에 Project and External Dependencies에는 프로젝트 생성 시 처음 추가했던 3개의 라이브러리보다 훨씬 더 많은 수의 라이브러리가 땡겨와진 것 확인 가능
∵ 우리가 사용하기 위해 추가한 3개의 라이브러리도 동작하기 위해서는 필요한 다른 라이브러리들이 존재함
⇒ Gradle은 이러한 추가적인 라이브러리를 자동으로 External Libraries에 추가해줌
- application.properties 설정
[ 참고 자료 ]
▷ Snippets
window - Show view - other 클릭 - snippets 검색
Open 클릭 시 아래와 같은 화면이 나옴
오른쪽 클릭 - Customize 클릭
Customize Palette에서 Name 및 Template 설정하면, 추후 클릭만 하면 파일 생성됨
화면에 출력시켜보기
▷ index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>어서오세요. 스프링부트의 세계로 ^^</h1>
<h2>어서오세요. 스프링부트의 세계로 ^^</h2>
<h3>어서오세요. 스프링부트의 세계로 ^^</h3>
<h4>어서오세요. 스프링부트의 세계로 ^^</h4>
<h5>어서오세요. 스프링부트의 세계로 ^^</h5>
<h6>어서오세요. 스프링부트의 세계로 ^^</h6>
</body>
</html>
▷ HomeController
package org.zerock.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
// 서블릿의 WebServlet 같은 설정
// 스프링에서는 '이 클래스는 컨트롤러입니다.' 라고 명시해야함
@Controller
public class HomeController {
// 이 요청주소는 여기서 처리합니다.
@GetMapping("/") // GET 방식 요청 시, 아래 메서드가 처리함
public String index() {
return "index";
// return값 String은 JSP 이름을 의미
// index.jsp 파일을 View 파일로 사용함
}
@GetMapping("/calc_form")
public String getCalcForm() {
return "calc_form";
}
}
프로젝트에서 오른쪽 클릭 - Run As - Spring Boot App 실행시키고, 서버창에 'localhost' 입력하면 화면 출력됨
White label 출력될 때 체크해야할 부분
① External Dependencies -> jasper 및 tomcat core / provided 있는지 체크
② build.gradle 수정 후, Gradle - Refresh grade project 를 통해 새로고침 해주기
③ application properties
'백엔드 > Spring Boot' 카테고리의 다른 글
2. 스프링 부트 시작하기 (1) - 스프링 콘셉트 공부 (0) | 2023.07.10 |
---|---|
48, 49 - Spring Boot : 회원가입 게시판 생성 (1) (0) | 2023.07.07 |
47 - Spring Boot : JSPCookBook 프로젝트 생성 (0) | 2023.07.05 |
46 - Spring : 의존성 주입 (0) | 2023.07.04 |
46 - Spring Boot (0) | 2023.07.04 |