SpringBoot 원리 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
프로젝트 초기 세팅
- 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
- 다운받은 프로젝트 압축풀기 => IDE에서 project open
“우측 하단에 빌드가 돌아가는 메시지가 보일텐데요. 일단 그게 다 끝날 때까지 기다리세요. 처음 오픈하면 시간이 제법 걸립니다.”
실행(Build & Run) 테스트
src>main>폴더>~Application => 우클릭 후 main 실행
- 성공화면
오류
빌드 오류
finished with non-zero exit value 1
해결방법 : Gradle 빌드 도구 수정
- [File > Settings] 메뉴 클릭 (맥 기준 단축키 : Command + ,)
- [Build, Excution, Deployment > Build Tools > Gradle] 클릭
-
Build and run using과 Run tests using이 아마도 Gradle(Default)로 되어있을텐데, 이것을 Intellij IDEA로 바꿔준다.
- 위 과정을 마친 후 프로젝트를 실행했을 때, 실행이 안된다면 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
해결방법
- Spring boot 프로젝트 포트번호 수정
application.properties에 8081번으로 포트를 변경한다는 코드를 입력해준다.
#configuring port
server.port = 8081
- 실행중인 :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 테스트’
-
브라우저 개발자 도구
- IntelliJ의 기능인 .http 파일 (*http 기능은 IntelliJ Ultimate 버전에서 지원)
- PostMan –> 사용
Postman 설치
: Rest API를 통합 관리하기 위한 SW
=> Spring Boot로 구현하는 API를 테스트하기 위한 용도로 사용
*회원가입 안해도 됨 (근데 하면 테스트했던 이력들이 남아있음)
특정 서버에 요청하고 응답하는 과정을 보여주는데 최적화된 SW
http 요청과 응답
‘웹 요청은 어떤식으로 보내야하고 응답은 어떻게 받는가’
=> 이걸 정의해놓은 표준기술 : ‘http’ ; 프로토콜, 대화방식
- 구조
Request
- Request Line : Method(Get,Post,Delete) , Path(포트 뒤 경로), HTTP version
- Header : accept (나는 특정 형식의 응답 데이터만 받겠다 - default : “*/” - 다 받음 )
- Message Body : post, put 같이 Message Body가 동반되는 경우
Response
- Status Line : Http Version, Status Code, Status Text
- Headers : content type (이 응답데이터는 html이다, text이다, json이다)
- 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
댓글남기기