스프링 입문 - 프로젝트 환경설정
막연하게 백엔드 경험을 해보고 싶다는 생각으로 어떤걸 공부할지 결정도 못한 채로 멍하니 시간을 보내다가
학교 인턴쉽 프로그램이나 Programmers에서 우연히 백엔드 분야 공고를 봤는데 Spring 경험이 대부분 필요했다.
관련 프로젝트에 뛰어들어서 경험을 쌓을 수 있다면 정말 좋겠지만 겉핥기도 못해본 지금은 자신이 없었고
Spring? Spring boot? 들어보기만 했던 것들을 경험이라도 해보자는 취지로 도서관에서 빌린 책으로 시작했으나
모르는 용어가 남발하고 이건 왜 이렇게 해야하지라는 고민이 거듭되면서 200페이지 즈음에서 덮어버렸다..!
이해가 안가기 시작해서 흐름을 잃었다는 말이 맞는 것 같은데 노력이 부족한 것도 맞지만😔
결정적으로 쓰여있는 코드를 쳐보면서 따라가려 했으나 버전이 다른 탓인지 오류때문에 실습이 불가능한 상태였다.
결국 시작도 못해보고 관둔 느낌이어서 답답한 채로 하루종일 있다가 추천글을 우연히 알게 돼서 다시 시작하게 됐다😄
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
이라는 강의인데,
확실히 나는 책보다 강의가 이해가 잘가는 것 같다😓
프로젝트 생성
일단 수강하는데 있어서 IDE는 IntelliJ든, Eclipse든 상관없으나
실제로 주변에서 사용하는 비율도 그렇고 편리한 점이 많아 IntelliJ를 추천한다는 말씀을 하셔서 IntelliJ로 진행하기로 했다!
과거에는 Spring 프로젝트는 밑바닥부터 만들었지만 요즘은 Spring Boot를 가지고 프로젝트를 만든다는 말과 함께 시작한다.
일일이 설정하면서 만들어가는 번거로움이 과거에는 존재했다면 그런 틀을 편리하게 만들 수 있도록 해주는 환경을
Spring Boot에서 제공하고 있다고 이해했다.
https://start.spring.io/는 Spring Boot 기반으로 Spring 프로젝트를 만들어주는 사이트인데,
여기서 몇 가지 간단한 설정과 함께 프로젝트를 간편하게 생성할 수 있고 IDE에서는 열어서 시작하면 된다!
최신 경향을 따라 maven이 아닌 gradle로 설정하고, Dependencies에서 Spring Web, Thymeleaf를 추가했다.
다운로드 받은 프로젝트 파일을 압축풀어서 IntelliJ에서 열기 : 실행 후 Open or import > build.gradle
처음에 로딩이 걸릴 수 있는데 방금 전에 Dependencies에서 설정한 내용들을 참고해서
라이브러리들을 불러오기 때문이라고 한다!
요즘은 maven이든 gradle이든 main과 test가 분리되도록 표준화되어 있다고 한다. (src/main, src/test)
요즘 개발 트렌드에서 test 코드라는게 중요하기 때문에 분리됐다고 보면 된다.
- src/main/java : 패키지와 Java 코드 파일
- src/main/resources : 실제 Java 코드 파일을 제외한 XML, HTML, 설정 파일(properties) 등
Run을 하면 정상적으로 처리가 되는데, http://localhost:8080/에서 다음과 같은 화면이 뜨면 성공이다.
환영합니다! 등의 문구가 뜰거라 예상했지만 표시될 Welcome Page가 없어서 Whitelabel Error Page가 뜬다고 한다.
라이브러리 살펴보기
앞서 Dependencies에 추가했던 라이브러리는 2개밖에 되지 않지만
External Libaries에서는 굉장히 많은 라이브러리가 추가된다.
이는 추가한 2개의 라이브러리를 돌리는데 필요한 또 다른 라이브러리들을 끌어오기 때문에 그렇다고 한다.
External Libaries 말고도 우측에 Gradle을 누르면 라이브러리 관계를 보다 쉽게 확인할 수 있다!
spring-boot-starter-web
- spring-boot-starter-tomcat : 웹서버
- spring-webmvc : 스프링 웹 MVC
spring-boot-starter-thymeleaf : 타임리브 템플릿 엔진(View)
spring-boot-starter(공통) : Spring Boot + Spring 코어 + Logging
- spring-boot-starter-logging : 어떤 내용을 출력해야할 때 System.out.println()이 아니라 log를 남기는 쪽으로 처리하는데
이는 후에 심각한 에러를 따로 모으거나 하는 등의 관리가 가능하기 때문이라고 한다.
spring-boot-starter-test : 테스트를 하기 위한 라이브러리로, junit이 핵심이라고 한다.
- spring-test : 스프링 통합 테스트 지원
- assertj, … : 테스트를 보다 쉽게할 수 있도록 도와주는 라이브러리라고 한다.
View 환경설정
‘resources/static’에 ‘index.html’을 넣어 놓으면 이 파일이 곧 Welcome Page가 된다고 한다.
즉, 위에서 봤던 Whitelabel Error Page를 대체하게 된다. 이미 서버가 Run되고 있었다면 끄고 다시 Run을 해주면 반영된다.
관련 내용은 여기에서 확인할 수 있다. (7.1.6. Welcome Page)
Controller
src/main/java/hello/hellospring/controller에 HelloController.java를 추가하고 다음 내용을 입력한다.
@GetMapping("hello")
라 써있기 때문에 ‘도메인/hello’라는 주소가 들어오면 처리하게 된다.
이후 src/main/resources/templates에 hello.html를 추가하면 HelloController.java
에서 Hello()
가
"hello"
를 리턴하기 때문에 templates/hello.html
로 이동해서 ${data}
가 쓰인 부분에
hello!!
가 쓰여지게 된다.
=> Controller에서 리턴 값으로 문자를 반환하면 viewResolver가 화면을 찾아서 처리한다.
(resources:templates/ + {ViewName} + .html)
빌드하고 실행하기
같은 포트를 사용하는 오류를 피하기 위해 서버를 끈 상태에서 진행하기!
콘솔에서 IntelliJ에서 열었던 파일이 있는 경로로 가서 다음과 같이 입력하면 빌드 및 실행이 된다.
- ./gradlew build (문제 발생시 ./gradlew clean build))
- cd build/libs
- java -jar hello-spring-0.0.1-SNAPSHOT.jar
- 완료!
Windows에서는 cmd로 들어가는데 1번만 다르게 ‘gradlew build’를 입력해주면 완료된다.
댓글남기기