2 분 소요

JDK

-> 스프링 부트 버전 알아서 jdk 설정해줌 : 8 , 11, 17 : 오픈 소스(공개) jdk 다운로드 후 설치

  • jdk 직접 다운로드 받는거 단점

    여러가지 프로젝트를 하다보면 여러 버전의 jdk를 하나의 개발장치에 설치해야하는 경우

    => 계속 업데이트 & 어떤 jdk를 활성화시킬지 계속감독 해야함

  • 아무런 지정을 하지 않았을때 default 버전으로 사용하겠다
// cmd
sdk install java 11. 0. 17
-> do you want to set default? 
  • 프로젝트별로 jdk 버전 설정
cd myproject/ 

sdk use java 17.0.5-amzn //17 버전 활성화 (java -version)


IDE (통합 개발환경)

IntelliJ IDEA


프로젝트 초기 세팅

  1. Spring initializr 에서 프로젝트 생성
  • 스프링 부트 2.7.14 기준 default setting

    Gradle-Groovy/ Java/ 2.7.14/ Jar/ 11

  • 스프링 부트 3.0.2 기준 default setting

    Gradle-Groovy/ Java/ 3.0.2 / Jar/ 17

  1. 다운받은 프로젝트 압축풀기 => IDE에서 project open

“우측 하단에 빌드가 돌아가는 메시지가 보일텐데요. 일단 그게 다 끝날 때까지 기다리세요. 처음 오픈하면 시간이 제법 걸립니다.”


실행(Build & Run) 테스트

src>main>폴더>~Application => 우클릭 후 main 실행

  • 성공화면

image-20230727092953195


오류

빌드 오류
finished with non-zero exit value 1 

해결방법 : Gradle 빌드 도구 수정

  1. [File > Settings] 메뉴 클릭 (맥 기준 단축키 : Command + ,)
  2. [Build, Excution, Deployment > Build Tools > Gradle] 클릭
  3. Build and run using과 Run tests using이 아마도 Gradle(Default)로 되어있을텐데, 이것을 Intellij IDEA로 바꿔준다.

  4. 위 과정을 마친 후 프로젝트를 실행했을 때, 실행이 안된다면 Terminal 에서 java -version 을 입력하여 자바 버전을 확인 후 Gradle JVM 의 버전을 맞춰준다.

[신희민] [오전 8:40] https://velog.io/@developerjun0615/Spring-Intellij-%EC%8B%A4%ED%96%89%EC%8B%9C-finished-with-non-zero-exit-value-1-%EC%98%A4%EB%A5%98


이미 다른 프로젝트/ 컴포넌트에서 사용중인 포트
Port 8080 was already in use

해결방법

  1. Spring boot 프로젝트 포트번호 수정

application.properties에 8081번으로 포트를 변경한다는 코드를 입력해준다.

#configuring port   
server.port = 8081
  1. 실행중인 :8080 포트 죽이기

Mac

// 8080포트 조회
lsof -i tcp:8080

// 8080포트 강제 종료 
kill $(lsof -t -i:8080)

Window

// 현재 사용하고 있는 8080 포트를 사용하는 네트워크 통계 정보를 출력한다. 
netstat -ano | findstr 8080 

// 위 명령어를 통해 출력된 목록의 process_id를 입력하여 강제 종료시킨다. 
taskkill /F /pid [process_id]

Port 8080 was already in use 에러 해결방법 — 유리코딩 (tistory.com)


Cannot resolve symbol

file - Invalidate Caches -> Invalidate and Restart


HelloController 작성해서 매핑 테스트

src>main>폴더> HelloController.java 클래스 생성

// 컨트롤러 클래스 코드 
package tobyString.helloboot;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping(value = "/hello")
    public String hello(String name){

        return "Hello"+name ;
    }
}

=> 코드 작성 후 재실행(run)

브라우저에 설정해준 요청 url 패턴에 맞춰 브라우저에 url 입력

http://localhost:8081/hello?name=Spring
  • 성공시 화면에 “HelloSpring” 출력

  • 실패시 화면에 Whitelabe Error Page 띄워짐


API 테스트 환경 세팅

브라우저 테스트로 눈에 보이는 화면만 보는게 아니라 보이지 않는 뒤에서 왔다갔다하는 과정을 자세히 알아야함

=> ‘API 테스트’

  1. 브라우저 개발자 도구

  2. IntelliJ의 기능인 .http 파일 (*http 기능은 IntelliJ Ultimate 버전에서 지원)
  3. PostMan –> 사용


Postman 설치

: Rest API를 통합 관리하기 위한 SW

=> Spring Boot로 구현하는 API를 테스트하기 위한 용도로 사용

*회원가입 안해도 됨 (근데 하면 테스트했던 이력들이 남아있음)

특정 서버에 요청하고 응답하는 과정을 보여주는데 최적화된 SW


http 요청과 응답

‘웹 요청은 어떤식으로 보내야하고 응답은 어떻게 받는가’

=> 이걸 정의해놓은 표준기술 : ‘http’ ; 프로토콜, 대화방식

  • 구조

Request

  1. Request Line : Method(Get,Post,Delete) , Path(포트 뒤 경로), HTTP version
  2. Header : accept (나는 특정 형식의 응답 데이터만 받겠다 - default : “*/” - 다 받음 )
  3. Message Body : post, put 같이 Message Body가 동반되는 경우

Response

  1. Status Line : Http Version, Status Code, Status Text
  2. Headers : content type (이 응답데이터는 html이다, text이다, json이다)
  3. Message Body
// REQUEST 

❯ http -v ":8080/hello?name=Spring"

GET /hello?name=Spring HTTP/1.1 
Accept: */* 
Accept-Encoding: gzip, deflate 
Connection: keep-alive 
Host: localhost:8080 
User-Agent: HTTPie/3.2.1 
Cookie:ajs_anonymous_id=286138aa-a4f1-451c-bf77-5e1a720ba63d; _ga=GA1.1.500140860.1689027439;
// RESPONSE 

HTTP/1.1 200  // 400 : 요청부터 잘못 , 500 : 서버 프로그램 문제 
Connection: keep-alive 
Content-Length: 12 
Content-Type:text/plain;charset=UTF-8 
Date: Thu, 01 Dec 2022 01:45:15 GMT 
Keep-Alive: timeout=60 
Hello Spring

댓글남기기