프로젝트 개요 : Jump to SpringBoot 클론코딩 - 회원제 QnA 게시판 웹
프로젝트 환경 : IntelliJ, SpringBoot, JPA, H2
프로젝트 코드 : https://github.com/smkim9202/sbb
스프링부트 프로젝트 생성하기
1. Spring Initializr
스프링부트기반으로 스프링 관련 프로젝트를 만들어주는 사이트 접속
2. 설정 선택
왼쪽에 있는 부분을 각자 원하는대로 적어주고 선택해준다.
- Maven Project / Gradle Project : 필요한 라이브러리를 땡겨서 오고 빌드하는 라이프사이클까지 관리하는 툴로 요즘은 Gradle을 사용하는 추세
- Spring Boot 버전 : 2.6.6 (SNAPSHOT 또는 M2, M3 가 붙지 않은 최신 버전을 선택한다.)
SNAPSHOT : 아직 만들고 있는 버전
M1 : 정식 릴레이즈 버전은 아님 - Project Metadata
Group : 기업도메인명
Artifact : 프로젝트명
"ADD DEPENDENCIES..." 버튼을 클릭 후 팝업창에서 원하는 의존성을 추가 해준다.
- Dependencies
Spring Web
Thymeleaf
....
3. 다운로드 후 압축 풀어주기
GENERATE 버튼 클릭해 압축파일 다운로드
압축파일 프로젝트홈(원하는 위치)에 압축해제
인텔리제이 사용하기
SpringBoot 프로젝트 열기
Open File or Project -> 압축 푼 파일 -> build.gradle -> Open as Project
롬복 플러그인 설치 및 동작확인
Settings -> Plugins -> lombok 검색 -> 설치
(디폴트로 롬복이 설치되어 있으면 enable 되었는지만 확인)
설치 후 동작 확인하기 : 롬복 이용하여 Getter, Setter
HelloLombok.java 파일 생성 후 코드 작성 => 아래코드 작성시 오류 없으면 정상
파일명 : 프로젝트/src/java/com/mysite/sbb/HelloLombok.java
//lombok 예제 - Getter, Setter
//롬복을 사용하면 @Getter @Setter 애너테이션 적용만으로 Getter, Setter 메서드를 추가하지 않고도 사용 할 수 있다.
//롬복으로 컴파일된 클래스에는 Getter와 Setter 메서드가 실제로 포함된다.
//@RequiredArgsConstructor 애너테이션을 적용하면 해당 속성에 필요로하는 생성자가 롬복에 의해 자동으로 생성된다.
// 단, final이 없는 속성은 생성자에 포함되지 않는다.
package com.mysite.sbb;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
@RequiredArgsConstructor
@Getter
//@Setter
// final을 적용하면 setter메서드는 의미가 없어진다. 한번 설정한 값을 변경할수 없기 때문이다.
public class HelloLombok {
private final String hello;
private final int lombok;
public static void main(String[] args) {
//HelloLombok hl =new HelloLombok();
//hl.setHello("헬로");
//hl.setLombok(4);
HelloLombok hl = new HelloLombok("헬로", 5);
System.out.println(hl.getHello());
System.out.println(hl.getLombok());
}
}
Auto Reload 설정
자바파일이나 템플릿 수정시 수작업 없이 자동으로 변경 사항을 적용하는 법
- JAVA
Settings -> Build,Execution,Deployment - Compiler -> Build project automatically 체크
Settings -> Advanced Settings -> Allow auto-make to start even~~ 체크
Spring boot Devtools 설치
서버 재시작 없이도 클래스 변경시 서버가 자동으로 재기동 된다.
//build.gradle 파일
dependencies {
developmentOnly 'org.springframework.boot:spring-boot-devtools'
//developmentOnly : Gradle의 developmentOnly는 개발환경에서만 적용되는 설정으로
//운영환경에 배포되는 jar, war 파일에는 developmentOnly로 설치된 라이브러리는 제외된다.
}
- thymeleaf
파일명 : 프로젝트폴더/src/main/resources/application.properties
(... 생략 ...)
spring.thymeleaf.cache=false
spring.thymeleaf.prefix=file:src/main/resources/templates/
로컬서버실행 & 배포파일생성(gradle)
- 그레이들로 로컬 서버 실행
1. 왼쪽 Gradle탭 클릭
2. 그레이들 창에서 '포로젝트폴더/Tasks/application/bootRun' 우클릭
3. Run '프로젝트명[bootRun]' 클릭
4. 로컬서버가 실행되는 모습을 인텔리제이 하단에서 확인
- 배포파일 생성하기
1. 왼쪽 Gradle탭 클릭
2. '포로젝트폴더/Tasks/build/bootJar' 우클릭
3. Run '프로젝트명 [bootJar]' 클릭
4. 오른쪽 Project탭 : 프로젝트/build/libs 디렉터리에서 프로젝트-0.0.1-SNAPSHOT.jar 같은 배포파일 생성 확인
SpringBoot 실행
브라우저에 'http://localhost:8080/hello' 입력 했을 때 브라우저 화면에 "Hello World" 문구 출력하는 웹 프로그램
1. HelloController.java 생성
컨트롤러(Controller) : 브라우저의 요청을 처리한다. 서버에 전달된 클라이언트의 요청(URL과 전달된 파라미터 등)을 처리하는 자바 클래스다.
파일명 : 프로젝트/src/java/com/mysite/sbb/HelloController.java
2. HelloController에 RequestMapping 코드 작성
package com.mysite.sbb;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
//Controller : HelloController 클래스가 컨트롤러의 기능을 수행한다는 의미
public class HelloController {
@RequestMapping("/hello")
//RequestMapping : 'http://localhost:8080/hello' URL 요청 발생시 hello 메서드 실행
//hello URL과 hello 메서드를 매핑하는 역할
@ResponseBody
//ResponseBody : hello 메서드의 응답 결과가 문자열 그 자체임을 나타낸다.
//hello 메서드는 문자열 'Hello World'를 리턴한다.
//응답 결과는 문자열이 아닌 HTML파일과 같은 템플릿을 주로 사용한다.
public String hello(){
return "Hello World";
}
}
3. 로컬서버 실행 => 웹 출력 확인
gradle로 서버 실행
로컬서버가 실행되는 모습 인텔리제이 하단에서 확인
브라우저 'http://localhost:8080/hello' 접속 후 'Hello World 출력 확인'
Live Reload
Spring Boot DevTools 수정내용 리프레시(Refresh) 또는 URL 재호출 없이 변경 사항 확인하기
크롬 브라우저에 LiveReload++ 확장프로그램 설치
https://chrome.google.com/webstore/detail/livereload%20%20/ciehpookapcdlakedibajeccomagbfab
LiveReload++
Watches a port and reloads the page if needed.
chrome.google.com
'프로젝트 > clone coding' 카테고리의 다른 글
[Jump to SpringBoot : SBB] 스프링부트 windows cmd창으로 빌드하고 실행 (0) | 2022.04.21 |
---|---|
[Jump to SpringBoot : SBB] 서비스와 DTO (0) | 2022.04.20 |
[Jump to SpringBoot : SBB] thymeleaf 템플릿 엔진(+ROOT URL) (0) | 2022.04.19 |
[Jump to SpringBoot : SBB] JpaRepository 상속 받은 Repository 테스트해보기(+JUnit 프레임워크) (0) | 2022.04.19 |
[Jump to SpringBoot : SBB] SpringBoot 기본 요소(Controller, JPA, Entity, Repository) (0) | 2022.04.19 |