1. 스프링 부트란?
스프링 부트(Spring Boot)
- 웹 프로그램을 쉽고 빠르게 만들 수 있도록 도와주는 자바의 웹 프레임워크
- 스프링(Spring) 프레임워크에 톰캣(Tomcat) 서버를 내장하고 여러 편의 기능들을 추가
톰캣(Tomcat)
- 클라이언트의 요청을 해석하여 그에 맞는 자바 프로그램을 실행한 후 그 결과를 응답해 주는 웹 애플리케이션 서버
- WAS
-> 웹 애플리케이션과 서버 환경을 연결하는 중간 역할을 하는 소프트웨어 플랫폼
2. 스프링 부트 개발 환경 준비하기
STS(Spring Tool Suite)
- 스프링 개발에 최적화된 에디터로 이클립스 기반으로 제작
스프링 부트 프로젝트 만들기
1) Create new Spring Starter Project 클릭해 스프링 부트 프로젝트 생성
Name - 프로젝트의 이름을 입력하는 항목
Type - 프로젝트를 관리하는 도구를 선택, 기본 값은 'Gradle-Groovy'
Java Version - 자바 버전을 선택하는 항목
2) 스프링 부트 버전을 선택하는 화면이 나타남
3) 프로젝트 생성 확인
4) 'Project 'sbb' has no explicit encoding set' 오류 문구 표시
- 프로젝트의 인코딩 방식을 아직 설정하지 않았기 때문에 표시
- Quick Fix 창에서 다음과 같은 설정을 확인한 후 [Finish] 버튼을 클릭하여, 프로젝트의 인코딩 방식을 UTF-8로 설정
3. 스프링 부트 맛보기
- 브라우저 주소 창에 'http://localhost:8080/hello' URL을 입력했을 떄 브라우저 화면에 'Hello World'라는 문구를 출력하는 웹 프로그램 작성
1) 웹 서비스 동작 방식
클라이언트와 서버 구조
클라이언트
- 브라우저(크롬, 사파리 등)
서버
- 브라우저로 접속 가능한 원격 컴퓨터
- 크롬 브라우저에서 서버에 요청을 보낼 때는 서버의 주소(IP 주소) 또는 서버의 주소를 대체할 수 있는 도메인명을 알아야 함
ex)
브라우저 주소 창에 naver.com을 입력하면 네이버에 운용하는 웹 서버가 호출되고 서버는 요청에 대한 응답을 브라우저에 돌려줌
- 웹 서버는 요청에 대한 응답으로 HTML 문서나 다른 리소스들을 브라우저에 표시
IP 주소와 포트
- 서버는 브라우저로 접속할 수 있는 웹 서비스뿐만 아니라 FTP, 이메일 서비스 등도 운용할 수 있음
- 포트(port)는 네트워크 서비스를 구분하는 번호로, 하나의 서버 주소에서 포트를 사용하여 매우 많은 서비스를 운용할 수 있음
프로토콜 | 서비스 내용 | 포트 |
HTTP | 웹 서비스 | 80 |
HTTPS | SSL을 적용한 웹 서비스 | 443 |
FTP | 파일 전송 서비스 | 21 |
SSH, SFTP | 보안이 강화된 TELNET, FTP 서비스 | 22 |
TELNET | 원격 서버 접속 서비스 | 23 |
SMTP | 메일 전송 서비스 | 25 |
localhost:8080
- localhost(로컬 호스트)라는 도메인명은 127.0.0.1이라는 IP 주소를 의미하며, 127.0.0.1 IP 주소는 내 컴퓨터를 의미
- 8080은 8080번 포트로 서비스를 운용한다는 의미
- localhost:8080은 내 컴퓨터(localhost)에 8080번 포트로 실행된 서비스를 의미
2) 컨트롤러 만들기
- http://localhost:8080/hello와 같은 브라우저의 요청을 처리하려면 먼저 컨트롤러(controller)가 필요
컨트롤러(controller)
- 서버에 전달된 클라이언트의 요청을 처리하는 자바 클래스
- HelloController.java 파일 생성
- 컨트롤러의 기능을 갖추기 위해 수정
@Controller
- HelloController 클래스가 컨트롤러의 기능을 수행한다는 것을 알려줌
@GetMapping("/hello")
- http://localhost:8080/hello URL 요청이 발생하면 hello 메서드가 실행됨을 의미
- /hello URL과 hello 메서드를 매핑하는 역할
- Get 방식의 URL 요청을 위해 GetMapping 사용
@ResponseBody
- hello 메서드의 출력 결과가 문자열 그 자체임을 의미
3) 로컬 서버 실행하기
- STS 상단의 툴바에서 [Boot Dashboard] 아이콘 클릭
- Boot Dashboard에서 'local' 왼쪽 클릭하면 'sbb' 프로젝트명이 보이고 이를 마우스로 클릭
- 브라우저로 실행
- /hello URL이 요청되면 컨트롤러인 HelloController의 /hello URL과 매핑된 hello 메서드가 호출되고 'Hello World' 문자열이 브라우저에 출력
4. 스프링 부트 도구 설치하기
1) Spring Boot DevTools 설치
- 서버를 재시작하지 않아도 클래스를 변경할 때 서버가 자동으로 재가동
- Spring Boot Devtools를 그레이들(Gradle)로 설치해야 함
build.gradle
developmentOnly
- 해당 라이브러리는 개발 환경에만 적용된다는 의미로, 운영 환경에 배포되는 jar,war 파일에는 이 라이브러리가 포함되지 않음
- build.gradle 파일에 작성한 내용을 적용하려면 build.gradle 파일을 선택한 후 마우스 오른쪽 버튼을 눌러 [Gradle -> Refresh Gradle Project]를 클릭하여 필요한 라이브러리를 설치해야 함
- 설치가 완료되면 Boot Dashboard의 서버명이 sbb에서 sbb[devtools]로 바뀜
- 서버 재시작 없이도 변경사항 적용
2) 롬복 설치하기
롬복(lombok)
- 소스 코드를 작성할 때 자바 클래스에 애너테이션을 사용하여 자주 쓰는 Getter 메서드, Setter 메서드, 생성자 등을 자동으로 만들어 주는 도구
- 롬복을 사용하려면 먼저 플러그인을 설치해야 함
- 내려받은 lombok.jar 파일을 명령 프롬포트 창에서 설치
- bulild.gradle 파일 수정
compileOnly - 컴파일 단계에서만 해당 라이브러리를 사용함을 의미
annotationProcessor - 컴파일 단계에서 애너테이션을 분석하고 처리할 때 사용함을 의미
롬복으로 Getter, Setter 메서드 만들기
- 롬복을 활용하면 속성에 대한 Setter, Getter 메서드를 별도로 작성하지 않아도 됨
[SpringBoot] Lombok 적용 안됨 ( 설치 했는데 안될 때 ) (tistory.com)
롬복 사용 안할시
...
public void setHello(String hello){
this.hello = hello;
}
public void setLombok(int lombok){
this.lombok = lombok;
}
public String getHello(){
return this.hello;
}
public int getLombok(){
return this.lombok;
}
...
롬복으로 생성자 만들기
- hello,lombok 속성에 final을 추가하고 @RequiredArgsConstructor 애너테이션을 적용하면 해당 속성을 필요로 하는 생성자가 롬복에 의해서 자동으로 생성
롬복 사용 안할시
...
public HelloLombok(String hello, int lombok) {
this.hello = hello;
this.lombok = lombok;
}
...
'SpringBoot' 카테고리의 다른 글
[Do it] 2장 스프링 부트 기본 기능 익히기(5) (0) | 2024.01.21 |
---|---|
[Do it] 2장 스프링 부트 기본 기능 익히기 (4) (0) | 2024.01.21 |
[Do it] 2장 스프링 부트 기본 익히기(3) (0) | 2024.01.19 |
[Do it] 2장 스프링 부트 기본 기능 익히기(2) (1) | 2024.01.19 |
[Do it] 2장 스프링 부트 기본 기능 익히기 (1) (0) | 2024.01.18 |