들어가기 앞서
스터디 영상
스터디 자료
안녕하세요, 백엔드 파트리드 권찬입니다 
1주차 백엔드 스터디에서는 http, 백엔드, api 에 대한 개념을 짚고 넘어가는 가벼운 내용으로 구성해보았습니다.
이번 주에 스터디에서 다룬 핵심 키워드들을 나열하면 다음과 같습니다.
•
웹
•
클라이언트 - 서버
•
HTTP
•
프론트엔드 - 백엔드
•
API
WIL을 작성하실 때 이 키워드들을 위주로 간단하게 정리해보시면 좋을 것 같습니다.
혹시 아직 웹 개발에 익숙하지 않으신 분들이나, 컴퓨터 네트워크를 수강하지 않은 분들은 처음 들어보는 용어가 많이 나와서 놀라셨을 수도 있을 것 같은데요 
1주차 스터디에서 다룬 내용들은 외워야 하는 내용이 아니라, 개발하는 과정에서 자연스럽게 이해하고 사용할 내용들이니 너무 부담갖지 않으셔도 괜찮습니다 :)
지금은 이 개념들이 어디에 사용될 지 감이 안오더라도, 앞으로 프로젝트를 만들면서 프로그램이 어떻게 동작하는지 경험해보면 피부로 체감되면서 잘 이해되실 거에요!
개발환경 준비하기
2주차부터 스프링 프레임워크를 사용하기 때문에 미리 개발 환경을 준비해두어야 합니다.
다음 과정을 따라 개발 환경을 준비해주세요.
개발 환경 세팅은 처음하면 에러도 많이 발생하고 복잡해서 어려우실 수 있습니다.
환경 세팅하시면서 어려움이 있으시다면 스터디 채널, DM 등으로 편하게 문의 주세요 :)
1.
JDK 17 설치
tps://www.oracle.com/kr/java/technologies/downloads/#java17
자신의 운영체제에 맞춰 설치해주세요.
스터디는 JDK 17을 기준으로 진행됩니다.
참고하면 좋은 링크 : https://yungenie.tistory.com/11
2.
인텔리제이 설치
https://www.jetbrains.com/ko-kr/idea/download
대학생 인증을 하는 경우, 무료로 intellij ultimate 버전을 사용할 수 있습니다.
ultimate 버전을 사용하시면 새 프로젝트에서 바로 start.spring.io 의 기능을 편리하게 이용할 수 있고, 다양한 편의기능이 더 있으니 ultimate 버전 사용을 추천드립니다.
프로젝트 생성 과정은 커뮤니티 버전 기능을 기준으로 설명드릴게요.
(ultimiate 버전으로도 아래 과정을 똑같이 따라하실 수 있습니다.)
3.
왼쪽 영역에서 그림과 같이 세팅해주세요.
project metadata 영역은 패키징과 자바 버전을 제외하고 자유롭게 입력해주셔도 괜찮습니다.
오른쪽 Dependencies 영역에서 외부 라이브러리(종속성)를 지정합니다.
우측 상단에 보이는 ADD DEPENDENCIES 버튼을 클릭하신 후 그림에 보이는 Lombok, Spring Web, Spring Data JPA, H2 Database 을 검색해서 추가해주세요.
페이지 하단의 GENERATE 버튼을 클릭하시면 프로젝트 압축 파일이 다운됩니다.
압축을 풀어주세요.
인텔리제이 IDE를 실행하시고, Open 버튼을 클릭하여 프로젝트를 열어주세요.
그림과 같이 todo-api 폴더 오른쪽 아래에 작은 네모 표시가 있으면, IntelliJ가 자바 프로젝트로 인식하였다는 뜻입니다. 이 폴더를 선택하거나, build.gradle을 선택하고 열어주세요.
build.gradle을 선택하신 경우, 이런 상태창이 뜬다면 Open as Project 를 선택해서 프로젝트로 열어주세요
오른쪽 아래의 Gradle 관련 상태 메세지가 있으면 외부 라이브러리를 다운 받고 설정하고 있다는 의미 입니다.
잠시 기다려주시면 설정이 끝나고 프로젝트를 실행할 수 있습니다.
Lombok 설정
인텔리제이에 롬복 관련 설정을 추가합니다.
참고하면 좋은 자료 : https://velog.io/@juhyeon1114/Lombok-롬복-사용하기
[파일] - [설정] - [플러그인] 에서 Lombok 을 검색하고, 플러그인을 설치합니다.
설정에서 빌드, 실행, 배포 - 컴파일러 - 어노테이션 프로세서 를 활성화합니다.
테스트 관련 빌드 설정
테스트를 실행하기 위해, 위 사진과 같이 다음을 사용하여 빌드 및 실행 란에 있는 부분을 gradle 대신 IntelliJ IDEA로 설정해줍니다.
다음을 사용하여 테스트 실행 도 마찬가지로 인텔리제이를 사용합니다.
이 설정을 안하면 나중에 테스트 코드를 실행할 때 에러가 발생할 수 있습니다!
스프링 어플리케이션 실행하기
src/main/java/com.example.todoapi 경로에 있는 TodoApiApplication.java 파일로 들어갑니다. (초기 세팅에 따라 경로와 자바 파일 이름은 다를 수 있습니다.)
main 함수를 실행하여 스프링 어플리케이션을 실행합니다.
(main 메서드 좌측 화살표 클릭, 또는 프로그램 우측 상단 실행 버튼 클릭)
만약 모듈 SDK가 설정되지 않았다고 뜨는 경우, JDK 17을 선택해주세요.
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.4.4)
2025-03-30T12:23:38.954+09:00 INFO 64426 --- [todo-api] [ main] c.example.todo_api.TodoApiApplication : Starting TodoApiApplication using Java 17.0.14 with PID 64426 (/Users/everdu/개인적인/GDSC/2025-1 정규 백엔드 스터디/todo-api/build/classes/java/main started by everdu in /Users/everdu/개인적인/GDSC/2025-1 정규 백엔드 스터디/todo-api)
2025-03-30T12:23:38.955+09:00 INFO 64426 --- [todo-api] [ main] c.example.todo_api.TodoApiApplication : No active profile set, falling back to 1 default profile: "default"
2025-03-30T12:23:39.284+09:00 INFO 64426 --- [todo-api] [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2025-03-30T12:23:39.293+09:00 INFO 64426 --- [todo-api] [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 5 ms. Found 0 JPA repository interfaces.
2025-03-30T12:23:39.442+09:00 INFO 64426 --- [todo-api] [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http)
2025-03-30T12:23:39.446+09:00 INFO 64426 --- [todo-api] [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2025-03-30T12:23:39.447+09:00 INFO 64426 --- [todo-api] [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.39]
2025-03-30T12:23:39.467+09:00 INFO 64426 --- [todo-api] [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2025-03-30T12:23:39.467+09:00 INFO 64426 --- [todo-api] [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 486 ms
2025-03-30T12:23:39.510+09:00 INFO 64426 --- [todo-api] [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2025-03-30T12:23:39.589+09:00 INFO 64426 --- [todo-api] [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection conn0: url=jdbc:h2:mem:741fecf9-0397-4140-8ce0-ef5cfd1811ce user=SA
2025-03-30T12:23:39.589+09:00 INFO 64426 --- [todo-api] [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
2025-03-30T12:23:39.606+09:00 INFO 64426 --- [todo-api] [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]
2025-03-30T12:23:39.624+09:00 INFO 64426 --- [todo-api] [ main] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.6.11.Final
2025-03-30T12:23:39.636+09:00 INFO 64426 --- [todo-api] [ main] o.h.c.internal.RegionFactoryInitiator : HHH000026: Second-level cache disabled
2025-03-30T12:23:39.747+09:00 INFO 64426 --- [todo-api] [ main] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer
2025-03-30T12:23:39.779+09:00 INFO 64426 --- [todo-api] [ main] org.hibernate.orm.connections.pooling : HHH10001005: Database info:
Database JDBC URL [Connecting through datasource 'HikariDataSource (HikariPool-1)']
Database driver: undefined/unknown
Database version: 2.3.232
Autocommit mode: undefined/unknown
Isolation level: undefined/unknown
Minimum pool size: undefined/unknown
Maximum pool size: undefined/unknown
2025-03-30T12:23:39.886+09:00 INFO 64426 --- [todo-api] [ main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)
2025-03-30T12:23:39.888+09:00 INFO 64426 --- [todo-api] [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2025-03-30T12:23:39.903+09:00 WARN 64426 --- [todo-api] [ main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2025-03-30T12:23:40.054+09:00 INFO 64426 --- [todo-api] [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path '/'
2025-03-30T12:23:40.059+09:00 INFO 64426 --- [todo-api] [ main] c.example.todo_api.TodoApiApplication : Started TodoApiApplication in 1.325 seconds (process running for 1.783)
Shell
복사
이렇게 나오면 성공입니다.
(Tomcat started on port 8080 (http) with context path '/' 메세지가 보여야 합니다)
위 사진과 같은 에러 페이지가 나오면 성공입니다.
과제
목표
•
API 명세서 작성하기
•
스프링 개발환경 준비하기
제출해야 할 파일과 파일 경로
1.
week1/wil.md 에 다음 내용을 적어주세요.
•
1주차에 학습한 내용을 자유롭게 정리합니다.
•
todomate 프로젝트의 기능 명세를 보고, 필요한 API 명세를 작성합니다.
강의에서 말씀드렸듯 method, path url 만 간단하게 정의해주시면 됩니다.
•
스프링 개발 환경을 준비하고 자바 어플리케이션을 실행합니다.
웹 브라우저에 localhost:8080 경로로 접속했을 때 나오는 흰색 에러 화면을 캡쳐하여 wil.md 파일에 함께 넣어주세요.
wil.md 에 첨부한 이미지 파일은 week1 폴더 안에 첨부해주세요.
2.
생성한 프로젝트 소스코드를 깃허브에 올려서 함께 제출해주세요.
이 프로젝트에 다음 주부터 스터디 끝까지 코드를 이어 작성할 예정입니다.
하단 예시 이미지처럼 코드를 제출해주시고, 혹시 어려우시다면 예시 깃허브 레포지토리를 포크하셔서 가져가셔도 됩니다.
(참고) 깃허브로 소스코드 제출하는 방법
(예시 이미지)
** week1 폴더는 이렇게 레포지토리 첫 화면에서 바로 보여야 과제 체크가 됩니다!
과제 예시는 마크다운 문법 활용, 폴더 구조 등을 참고하는데 사용해주세요 :)
마감 기한
2주차 스터디가 시작하기 전 4/8 화요일 23:59 까지 제출해주세요.
자신의 레포지토리에 week1 폴더를 생성해 wil.md 파일을 제출합니다.
더 자세한 사항은 아래 링크를 참조해주세요.