초록 스터디는 스프링을 처음 접하는 스프링 입문자들을 위해 스프링 부트의 기능을 연습해보는 교육 과정이다. 동아리 신규 구성원들의 온보딩 과정에 이용해보고자 시작하게 되었다. 이러한 본래의 목적과 별개로 나는 스프링 부트를 학습하기 위해 스터디에 참여한 것도 있다.
1단계 진행 중
1단계 학습 주제: 웹 요청과 응답을 처리하기 위한 Spring MVC의 기능
build.gradle
에 다음 의존성 추가implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
@EnableWebMvc
어노테이션 추가build.gradle
에 다음 의존성 추가implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
application.properties
에 다음 내용 추가# 정적 리소스에 변화가 있을 때 바로 반영한다.
spring.devtools.livereload.enabled=true
# thymeleaf 참조 경로
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
# thymeleaf에 대한 캐시를 남기지 않는다. cache=false 설정(운영시는 true)spring.thymeleaf.cache=false
# templates 디렉토리에 파일이 있는지 없는지 체크, 없으면 에러를 발생시킨다.
spring.thymeleaf.check-template-location=true
controller
에 매핑 코드 작성resources/templates/home.html
이 있어야 함@Controller
public class RoomescapeController {
@GetMapping("/")
public String home() {
return "home";
}
}
No mapping for GET /css/styles.css
No mapping for GET /js/scripts.js
홈페이지 접속 시 css와 js가 매핑되지 않는 현상이 발생했다.
위의 스프링 부트 실행 후 바로 종료되는 경우
의 해결책과 충돌하여 발생한 것으로, Application
에서 @EnableWebMvc
어노테이션을 제거함으로써 해결되었다.
@EnableWebMvc
는 스프링에서 기본적으로 제공하는 웹 기능들에 대한 설정을 자동으로 진행해주는 어노테이션이다. 하지만 웹 기능을 추가적으로 커스터마이징하고자 한다면 이 어노테이션을 빼주어야 한다.
Spring Boot를 사용해본 경험이 적다 보니 환경 세팅 단계에서 예상치 못하게 시간이 오래 걸렸다. 이 때문에 1주차에는 실질적인 로직 구현을 거의 못해본 것 같아 아쉽다. 하지만 환경 세팅이 거의 끝난 만큼 다음 주부터는 훨씬 유익한 내용을 다룰 수 있기를 기대한다.