🎈 Intro
우테코 합격 결과가 나오고나서 어떤 공부를 하면서 지낼까 고민을 하다가 결국 모바일도 백엔드가 필요할 것이라고 생각이 들었다. 이전부터 해보고 싶기도 했고 배워본적이 1도 없는 분야라서 걱정이 되기도 하지만 이번 기회에 조금씩 알아가보려고 한다.
스프링 백엔드 강의하면 누구나 김영한 선생님의 강의를 꼽는다. 그래서 나도 무료 강의부터 들어보려고 한다. 우테코 시작까지 한 달이 남았는데 그 안에 다 듣고 내 것으로 습득하는 것이 목표이긴 한데 잘 모르겠다. (설연휴도 있고 생일도 있고.. 놀고 싶은 마음을 억제하기는 어려우니 장담은 못하겠다ㅎ..)
여기 글에서 나오는 코드와 그림은 인프런에 있는 김영한 선생님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술에서 가져온 것임을 미리 알린다. (혹시나 문제가 된다면 말씀해주시면 감사합니다.)
[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의
스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런...
www.inflearn.com
🎡 IntelliJ Gradle 대신 자바 직접 실행
최근 IntelliJ는 Gradle을 통해서 실행 하는 것이 기본 설정인데, 이렇게 하면 실행속도가 느리다고 한다. 그래서 다음과 같이 변경하면 자바로 바로 실행해서 실행속도가 더 빠르다.
[File] → [Setting] → gradle 검색
- Build and run using : Gradle → IntelliJ IDEA
- Run tests using : Gradle → IntelliJ IDEA
📕 라이브러리 살펴보기
Gradle은 의존관계가 있는 라이브러리를 함께 당겨오는 역할을 한다. 강의에서 사용하는 라이브러리를 정리해보면 다음과 같다.
스프링 부트 라이브러리
- spring-boot-starter-web
- spring-boot-starter-tomcat : 웹서버
- spring-sebmvc : 스프링 웹 MVC
- spring-boot-starter-thymeleaf : 타임리프 템플릿 엔진(View) spring-boot-starter : 스프링 부트 + 스프링 코어 + 로깅
- spring-boot
- spring-core
- spring-boot-starter-logging
- logback, slf4j
- https://www.youtube.com/watch?v=1MD5xbwznlI&t=650s 참고
- spring-boot
테스트 라이브러리
- spring-boot-starter-test
- junit : 테스트 프레임워크
- assertj : 테스트 코드를 좀 더 편하게 작성하도록 도와주는 라이브러리
- spring-test : 스프링 통합 테스트 지원
junit과 assertj는 우테코 프리코스를 진행하면서도 봤던 친구들이라 강의를 진행하면서 잘 익혀두면 나중에도 쓸모가 있지 않을까 싶다.
💻 View 설정
프로젝트를 만들고 바로 서버를 실행시킨 뒤에 localhost:8080 을 통해 접속해보면 Whitelabel Error Page가 뜰 것이다. 서버에 들어왔을 때 welcome 페이지를 만들어보자.
src/main/resources/static/ 아래 index.html파일을 만들어주자. 그리고 원하는 html 코드를 작성해준 뒤에 다시 서버를 실행하여 localhost:8080 에 접속해보면 잘 렌더링 되어 나오는 것을 볼 수 있다.
src/main/java/hello.hellospring 아래에 "controller" 패키지를 만들고 "HelloController" 클래스를 만든다. 그리고 아래와 같이 코드를 작성해주자.
위 코드가 동작되는 과정은 아래와 같다.
컨트롤러에서 model에 addAttribute()를 통해 값을 넣어준다. 그리고 리턴 값으로 hello를 반환하게 되는데 그러면 스프링부트에서 templates폴더 아래에서 hello.html을 찾고 렌더링해서 보여준다. 그리고 html에서는 타임리프를 사용하여(아직 타임리프가 무엇인지 언제 사용하는지는 정확히 모르겠지만) 컨트롤러에서 넣어준 데이터를 뿌려줄 수 있다.
일반적으로 정리하면 컨트롤러에서 리턴 값으로 문자를 반환하면 뷰 리졸버(viewResolver)가 화면을 찾아서 처리한다. 그리고 스프링 부트 템플릿엔진 기본 viewName 매핑이 된다. "resources:templates/" + {ViewName} + ".html" 이 된다. 위 예시에서 보면 ViewName은 hello가 되는 것이다.
📌 빌드하고 실행하기
윈도우를 사용하기 때문에 윈도우 기반으로 정리한다.
1. cmd 창에서 현재 스프링 프로젝트로 이동
2. ./gradlew
3. gradlew build
4. cd build/libs
5. java -jar hello-spring-0.0.1-SNAPSHOT.jar
hello-spring-0.0.1-SNAPSHOT.jar는 빌드를 하면 build/libs 아래 생성되는 파일이다.
주의할 점은 8080포트를 한 곳에서만 사용할 수 있다는 것이다. 그래서 cmd창으로 빌드하고 싶다면 인텔리제이에서 실행하고 있는 것을 종료해줘야 한다.
서버를 배포하고 싶을 때는 jar파일을 복사해서 서버에 넣어주고 실행시켜주면 된다.
만약 빌드를 삭제하고 싶을 때는 build clean을 사용하면 된다.
아직 많은 내용을 다룬 것도 아니지만 재밌다. 저번 학기 종합 설계에서 나는 안드로이드를 진행했고 백엔드와 데이터를 주고 받았던 적이 있다. 이 때 서버는 어떻게 진행이 되고 어떤 동작을 하는지 궁금했었는데 고작 하루 공부했지만 궁금증을 해결할 수 있을 것만 같은 기분이 든다. 아주아주 재밌다.