일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 운영체제
- CS
- 테스트코드
- 오늘도
- 내가해냄
- 어찌저찌해냄
- 스프링부트 테스트코드
- 스프링부트와 AWS로 혼자 구현하는 웹 서비스
- jpa
- 스프링부트
- 자바스크립트
- 스프링부트와 AWS로 혼자 구현하는 웹서비스
- 트랜지스터
- 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
- Flexbox
- 개발자기술면접
- AWS EC2 구현
- 기술면접
- 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 2장
- 그래도일단
- Today
- Total
개발 공부
[Spring Boot] 프로젝트 환경 설정 본문
1. 프로젝트 생성
spring initializr(start.spring.io)에서
(1) Project - Gradle Project
(Maven? Gradle? -> 필요한 라이브러리를 땡겨서 오고, 빌드하는 라이프 싸이클 관리까지 해줌 과거에는 Maven많이 씀)
(2) Language - 나는 자바
(3) Spring Boot Ver 선택 - 스냅샷은 아직 만들고 있는 중이라는 뜻
(4) MetaData - 프로젝트명
(5) Dependencies
Spring Web과 Thymmeleaf (템플릿 엔진 중 하나)
2. 프로젝트 보기
(1) src 폴더 - 요즘에는 main이랑 test라는 폴더가 기본적으로 나눠져있음
test는 test 코드들과 관련된 것들이 들어 있는데 요즘 개발 트렌드에서는 굉장히 중요하게 생각함
(2) bulid gradle
스프링 부트에서는 설정 파일들이 제공이 됨.
ㄱ. maven central
: 필요한 라이브러리들은 여기서 다운 받을 수 있게끔 설정돼 있음. 여기에 특정 사이트 url을 첨가 가능
(3) gitignore
: 기본적으로 만들어 줌
3. 실행해 보기
java 폴더에 들어가서 생성된 파일을 열어 보면, 우리 눈에 익숙한 메인 메소드가 있음.
실행시키면 하단부에 결과물이 뜨는데, spring이라는 글자와 함께 그 아래에
Tomcat started on port(s) : 8080 (http) with context path ''
이런 것이 떠 있음!!!
이때 웹 브라우저 들어가서 localhost:8080으로 들어가면 에러페이지가 뜨는데 그러면 연결 성공된 것
여기서 중요한 건 스프링이 Tomcat이라는 서버를 내장하고 있다는 점인 것 같다.
*번외) 인텔리제이를 쓸 때, 자바를 통해서가 아니라 Gradle을 통해서 실행되는 경우가 있는데
이거는 Window의 경우 File - Setting에 들어가서 Gradle을 검색 후(Mac에서는 Preference)
Build and run와 그 아래거를 인텔리제이로 바꿔줌 (이렇게 바꾸면 더 빨리 실행됨)
4. 라이브러리 살펴보기
build gradle의 dependencies 보면 뭘 가져왔는지 알 수 있다. (내가 start spring io에서 가져온 목록이 뜸)
더 자세히 보려면 External Libraries 라는 것을 열어보면 뭐 가져왔는지 자세히 볼수 있다. (내가 가져오지 않은 목록들도 뜸. -> maven이나 gradle에서 내가 가져오고자 한 라이브러리와 의존관계를 갖고 있는 라이브러리를 다 알아서 가져와줌)
인텔리제이의 왼쪽 아래 젤 구석에 있는 아이콘을 누르면 (맥에서는 커맨드2번) gradle 관련 창이 뜸.
내가 가져온 라이브러리 목록이 있고, 또 그 안에! 필요한 라이브러리들이 있는 걸 볼 수 있음
(*)는 위에 가져온 파일을 중복해서 가져온다는 거.
스프링부트를 이용하면 core와 같이 기존에 필요한 것들이 자동으로 땡겨와짐!!!
spring boot starter에 보면 logging이라는 라이브러리가 있는데, 취준생들은 system out println을 쓰지만
실무에서는 log를 쓴다. (치명적인 에러를 정리해서 보여주고..? 뭐 그래서) 그 안에 보면
slf4j, logback 가 있다. 전자는 쉽게 말해서 인터페이스. logback은 실제 로그를 어떤 구현제를 쓸까 하면 logback... 성능이 좋다고 함.
test와 관련된 라이브러리
test가 jUnit을 테스트 프레임워크로서 사용. (요즘엔 5버전 주로 쓰는)
spring-test : 스프링과 통합해서 테스트를 할 수 있도록 도와주는 라이브러리.
(정리 내용은 강의 자료 참고하기)
5. 웰컴 페이지 띄워보기
스프링부트의 전반적인 설명은
spring.io의 Project -> Spring Boot -> LEARN -> Reference Doc.에 들어가면 찾을 수 있는데
시작페이지의 관한 설명은 Web에 들어가서 welcome Page를 검색하면 나옴.
이에 대한 설명으로는 스프링 부트는 먼저 static에서 index.html을 찾는다
만약 못 찾으면 index 템플릿을 찾는다고 설명돼 있음.
아무튼 그래서 index.html을 만들어주었다.
이클립스와 다르게 인텔리제이는 파일을 만들고 싶은 폴더 오른쪽 클릭 -> file -> 파일명으로 확장자 설정함.
그래서 그냥 파일 만들 때 index.html이라고 입력,,!
이 다음 부분은 학원에서 배운 스프링과 다를 게 없어서 괜찮았다.
6. 빌드하고 실행하기
cmd로 빌드한다는 것은 나에겐 생소했다. 왜 굳이 cmd로 하는가 싶어 찾아보니까
개인적으로 만드는 프로젝트의 경우 빌드는 IDE에서 해도 되지만, 서버에 배포한 후에는 cmd만 사용할 수 있으며 실무에서 개발할 때 cmd만으로 빌드를 해야 할 때가 많기 때문이라고 함.
나는 Windosw를 쓰고 있어서 Git Bash를 따로 다운로드 받았다.
일반적인 명령 프롬프트(cmd)보다 Git Bash를 사용하는 것이 좋다고 한다. Bash명령어를 쓸 수 있기 때문이라고 하는데 자세한 건 참고한 주소에 설명이 돼있음.
우선 Git Bash 다운 받기
https://git-scm.com/
위 페이지에 들어가서 오른쪽에 보면 Download for Windows가 있음
클릭 후, 상단부에 Click here to download 어쩌고 하는 부분을 클릭하면 다운로드가 진행된다.
나는 따로 건드리는 것 없이 그냥 쭉쭉 Next 누르고 Install했다.
그 다음 IntelliJ와 연동하기는 아래의 주소를 참고했다.
https://violetboralee.medium.com/intellij-idea%EC%99%80-git-bash-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0-63e8216aa7de
연동하고 나면, 내가 만든 프로젝트 폴더에 들어가서 마우스 우클릭 했을 때 Git Bash가 목록에 생겨 있을 것이다.
여기서 기본 jar파일들을 받아주었다.
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard
김영한님의 강의를 보고 따라했다. 감사합니다.
김영한님은 맥을 쓰시기 때문에 명령어가 조금 다를 수 있는데 나는
./gradlew
./ gradlew.bat
./gradlew build
cd build
ls
를 차례로 입력했더니 libs 폴더가 생성된 것을 볼 수 있었다. 거기에 필요한 jar파일도 들어 있었음.
처음 빌드 했을 땐 libs 폴더조차 생성이 안돼서 IntelliJ 우측의 Gradle -> 프로젝트 폴더 -> build 폴더 -> clean 클릭
후에 다시 빌드해 주었더니 잘 생성 됐음 (또는 Git Bash에 ./gradlew clean build)
이제 서버에 배포할 때는 java -jar에 파일만 복사해서 서버에 넣어주면 됨!
나도 libs 폴더에
java -jar (프로젝트명)-0.0.1-SNAPSHOT.jar
이렇게 입력했더니 실행되는 것을 확인할 수 있었다😋
'코딩 정리 노트' 카테고리의 다른 글
도메인이란? (0) | 2022.06.15 |
---|---|
[JavaScript] 아이디 중복 체크 여부 기능 만들기 (0) | 2022.06.11 |
flex box 정리하기 (0) | 2021.12.07 |