글에서 나오는 모든 코드와 사진들은 김영한님의 인프런 스프링 입문 강의에서 가져온 것임을 미리 알립니다.
오늘은 알고리즘도 하기 싫고 cs도 하기 싫어서 그냥 스프링 강의를 들었다. (아무것도 안하면 불안한 취준생이라...)
그 유명한 김영한 님의 스프링 강의! 처음 듣는 거라서 우선 무료 강의를 들어봤다.
강의를 들으면서 정리해야하는 내용들과 나중에 공부할 때 도움이 될만한 내용들을 적을 예정이다.
글에서 나오는 모든 코드와 사진들은 김영한님의 인프런 스프링 입문 강의에서 가져온 것임을 미리 알립니다.
라이브러리 살펴보기
Gradle이나 Maven과 같은 tool들은 의존 관계를 관리해준다.
=> 예를 들어 spring-boot-starter-web이라는 라이브러리를 사용하려고 한다. 그러면 이 라이브러리에서 필요한 라이브러리들이 존재하는데 그런 라이브러리들을 가져오도록 해주는 역할을 한다. (A라는 라이브러리는 B라는 라이브러리를 사용한다(의존 관계이다). 내가 만약 A라이브러리를 사용하려고 가져왔을 때, 따로 B를 가져올 필요가 없도록 해주는 것이 Gradle이나 Maven의 역할
인델리제이의 오른쪽에 Gradle를 클릭해보면
위와 같은 화면을 볼 수 있다. 내가 선택한 건 thymeleaf와, web 두개인데 해당 라이브러리가 필요로하는 라이브러리들이 아래로 나열되어 있는 것을 볼 수 있다. (*)이 붙어져있는건 이미 다른 곳에서 설치가 되어있는 경우(중복)를 말한다.
Spring-boot-starter-web
- spring-boot-starter-tomcat: 톰캣(웹서버)
- spring-webmvc: 스프링 웹 MVC
Spring-boot-starter-thymleaf : 타임리프 템플릿 엔진(View)
로깅
logback 과 slf4j가 있는데 slf4j는 쉽게 말해서 인터페이스이고 실제 로그를 어떤 구현체로 출력할건지에 대해 logback을 많이 선택한다.
테스트
- 자바 진영에서 테스트를 할 때 junit이라는 것을 많이 사용한다.
- spring-test : spring과 통합해서 테스트할 수 있도록 도와주는 라이브러리
View 환경설정
서버를 run했을 때 가장 먼저 나오는 시작페이지를 만들려고 한다.
staic 폴더에 index.html 파일 생성한다. 이제 index.html에 작성한 html코드가 시작 페이지로 나올 것이다.
Controller를 생성해서 다음과 같이 작성해준다.
위 코드가 동작하는 구조를 보면 아래 그림과 같다.
컨트롤러가 model를 생성하고 그 model에 addAttribute를 사용해서 데이터를 설정해준다. (정적인 것이 될 수도 있고, DB에서 가져온다면 동적인것이 될 수도 있음)
return값으로 "hello"을 주게 되면 스프링부트에서는 templates폴더 밑에서 "hello".html를 찾고, 아까 생성했던 모델을 기반으로 html을 불러온다. 모델은 하나의 데이터 저장소라고 생각하면 될 것 같다.
html에서 {data}는 모델에서 Attributename을 data로 넣은 데이터의 value값을 가져와서 사용한다. 만약 attributename이 text라면 {text}로 value값을 가져올 수 있다.
빌드하고 실행하기
나는 윈도우 사용자라서 윈도우 버전으로 설명하려고 한다.
주의해야할 점은 8080포트로 실행이 되기 때문에 스프링에서 뭔가 실행중이라면 중단하고 해야한다.
- cmd창을 연다.
- cd를 사용해서 현재 스프링 프로젝트로 이동.
- dir을 입력해서 우선 gradlew.bat가 있는지 확인한 후 , 있다면 제대로 이동한 것이다.
- 그리고 이제 gradlew 엔터
- gradlew build 엔터
- cd build/libs
- java -jar hello-spring-0.0.1-SNAPSHOT.jar 을 입력하면 실행된다.
이제 서버에 배포할 때는 hello-spring-0.0.1-SNAPSHOT.jar 이 파일만 복사해서 서버에 넣어주고, 실행을 시켜주면 된다.
만약 잘 안된다면 gradlew clean build를 사용해서 build폴더를 완전히 삭제한 후, 다시 해보는 것도 방법이다 .
'개발 공부 > Spring' 카테고리의 다른 글
[Spring] 인프런 스프링 입문 강의 정리 #5 (0) | 2022.06.26 |
---|---|
[Spring] 인프런 스프링 입문 강의 정리 #4 (0) | 2022.06.25 |
[Spring] 인프런 스프링 입문 강의 정리 #3 (0) | 2022.06.23 |
[Spring] JAVA에서 Spring으로 변환 정리 (개인 공부 정리용) (0) | 2022.04.22 |
[Spring] 인프런 스프링 입문 강의 정리 #2 (0) | 2022.04.17 |