1-3 스프링부트 도구
스프링개발을 하는데 있어서 도움을 주는 도구들을 설치하자.
이전시간에 이어 코드는 그대로 사용되고 있다.
package com.study.springboot;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@GetMapping("/hello")
@ResponseBody
public String hello() {
return "Hello SBB";
}
}
"Hello World"의 문구를 "Hello SBB"로 변경했다.
저장을 한 후 http://localhost:8080/hello에 접속을 하더라도 "Hello World"라는 문구가 그대로 출력이 되는 이유는 로컬서버에 대해 리로드를 하지 않는다면 서버의 반영은 이전에 등록된 메서드 그대로 나타나기 때문이다.
리로드 하는 것이 가장 원초적인 방법이긴 하지만, 개발을 진행하는 동안에는 매우 귀찮은 상황일 것이다. 이것을 실시간으로 변경해주는 도구가 바로 Spring Boot Devtools.
※ Spring Boot Devtools 내에는 다양한 기능이 있으나 내가 필요로 하는 것은 실시간 변경이기 때문에 상세한 기능은 언젠가 확인해보도록 하자
Spring Boot Devtools
Spring Boot Devtools을 사용하기 위해 Gradle로 설치를 해야한다. build.gradle 파일을 수정해야 한다.
/sbb/build.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '3.0.0'
id 'io.spring.dependency-management' version '1.1.0'
}
group = 'com.study'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
}
tasks.named('test') {
useJUnitPlatform()
}
- 기존의 코드에 dependencies에 developmentOnly 'org.springframework.boot:spring-boot-devtools'를 추가
developmentOnly Gradle의 developmentOnly는 개발환경에서만 적용되는 설정이라고 한다. 즉, 운영환경에 배포되는 jar, war 파일에는 developmentOnly로 설치된 라이브러리는 제외. |
build.gradle에 대해 저장이 완료되었다면 끝? NO! 라이브러리를 다운로드 해줘야 한다.
자동으로 수정이 되는 것처럼 보이지만, 큰 차이점은 중지를 하고 시작하느냐 혹은 바로 시작으로 적용되느냐 차이 같다....
라고 생각을 했었으나
이전 처럼 재시작을 할 필요없이 클래스에서 변경을 한 후 저장을 하면 바로 Console에서 변경이 되면서 브라우저 창에서 새로고침을 하면 자동 변경이 되었다는 점을 확인할 수 있다. 실망할 뻔했는데 내가 잘못 알고 있었던 것이다.
Live Reload
Spring Boot Devtools 내에는 Live Reload의 기능이 있는데 이는 새로고침을 하지 않고도 바로 적용되는 기능 같다.
하지만 이를 사용하기 위해서는 이클립스에서 설정을하는 것이 아닌 브라우저인 크롬에서 Live Reload를 설치해야한다.
LiveReload++
Watches a port and reloads the page if needed.
chrome.google.com
해봤는데 LiveReload는 쓸 이유를 잘 모르겠다. 어짜피 새로고침 해야 적용되는 것으로 보인다.
롬복
LomBok은 자바 클래스에서 Getter, Setter, 생성자 등을 자동으로 만들어 주는 도구(필자가 제일 어려워 했던 게터세터)
Spring Boot Board를 하면서 데이터를 처리하기 위한 엔티티 클래스, DTO 클래스등을 사용하게 되는데 지금 글을 쓰면서 수업중에 들었던 것이지만, 다시 복습을 하면서 getter, setter가 저들을 가져온 것으로 안다. 직접 입력하는 것으로 배웠는데 이를 롬복으로 깔끔한 소스코드로 만들어 준다고 하니 나로써는 무조건 쓸 이유가 형성된다.
롬복을 사용하기 위해서는 플러그인을 다운로드 해야 한다.
Download
projectlombok.org
다운로드한 파일을 활용하기 위해서는
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=neosya&logNo=221502611349
windows에서 .jar 실행하기
회사에서 만든 UI 프로그램이 java로 작성되어 있어서, .jar 실행파일을 윈도우에서 실행하는 방법을 찾...
blog.naver.com
해당 사이트를 참고하여 활용해보도록 하자.
하지만 나는 그래도 공부하는 것이기 때문에 직접 캡쳐를 하면서 해보려고 한다.
- PowerShell 창 열기를 하기 위해서는 필요로 하는 jar파일이 있는 폴더에서 흰 바탕에 shift 오른쪽 버튼을 클릭한다.
- 해당 폴더에서 Power Shell을 열었기 때문에 Downloads가 잡혀 있는데 다른 폴더에서 진행했을 경우 cd Downloads 입력으로 주소를 잡아줄 수 있다.
- java -jar 파일명.jar 를 입력 해주면 되는데 나는 lombok이기 때문에 java -jar lombok.jar를 입력한다.
- 이처럼 위협적인 문구가 나오지만 쫄필요가 없다. 순서대로 체크를 해주도록하자
- OK
- Specify Location... > 롬복 플러그인을 사용할 IDE인 STS가 설치된 경로를 선택
- Install/Update
- Quit Install
STS(나에게는 이클립스)을 재접속 한 후 build.gradle 파일을 수정한다.
이전 처럼 dependencies에 compileOnly와 annotationProcesser를 추가해준다.
plugins {
id 'java'
id 'org.springframework.boot' version '3.0.0'
id 'io.spring.dependency-management' version '1.1.0'
}
group = 'com.study'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
}
tasks.named('test') {
useJUnitPlatform()
}
당연히 위의 과정을 입력하였다면 저장이 아닌 라이브러리 다운로드를 해줘야 한다.
compileOnly build.gradle 파일의 compileOnly는 해당 라이브러리가 컴파일 단계에서만 필요한 경우에 사용 |
annotationProcessor 컴파일 단계에서 애너테이션을 분석하고 처리하기 위해 사용 |
이클립스 재실행하기
Getter, Setter 정상작동 확인하기
LomBok이 제대로 설치가 되었다면, 정상적으로 작동되는지 확인하자