아기는 만 3~5개월 경 뒤집기를 합니다. 뒤집기는 별거 아닌 것 같지만 아기에게는 큰 일입니다. 뒤집기를 하기 위해 하루종일 낑낑 거리거나 짜증을 내거나 울기까지 합니다. 힘들고 귀찮은 일이지만 살아가기 위해서는 반드시 해야 하는 일입니다. '뒤집기'라는 일을 마치고 나면 걸을 수 있고 말을 할 수 있게 됩니다. 위대한 일의 시작은 사소한 일입니다.
스프링 부트 프로젝트를 생성합니다. 처음 프로젝트를 시작하면 코드가 몇 줄 있지도 않고, 어떤 기능도 없습니다. 별 거 아닌 것처럼 보이지만 사소한 코드들이 모여 위대한 프로젝트라 될 겁니다.
New Project를 선택하여 프로젝트를 생성합니다. 스프링 부트 프로젝트는 spring.io를 통해서도 생성할 수 있지만, intelliJ를 이용하는 편이 조금 더 편리합니다.
project Name, Group, Artifact, JDK를 설정합니다.
Project에 사용할 의존성을 추가합니다. Spring Web은 스프링 웹 프로젝트에 필수 의존성입니다. Spring Boot DevTools는 JSP 등의 코드를 변경했을 때 프로젝트를 재실행하지 않아도 빌드를 자동으로 해줍니다. Lombok은 getter, setter 등의 메서드를 어노테이션으로 처리해주는 의존성입니다.
DB는 MariaDB를 사용할 것이므로 MariaDB를 추가하고, Persistence Framework는 MyBatis를 사용할 것이므로 MyBatis를 추가합니다.
프론트에서 JSP를 사용할 예정인데, 위 화면에서는 JSP를 추가할 수 없습니다. 수동으로 build.gradle에 추가해줍니다.
/* JSP */
implementation group: 'org.glassfish.web', name: 'jakarta.servlet.jsp.jstl', version: '2.0.0'
/* Jasper */
implementation "org.apache.tomcat.embed:tomcat-embed-jasper"
스프링 부트에서 왜 아직까지 자동으로 폴더를 생성해주지 않는지 의문입니다. 필요한 폴더를 수동으로 생성합니다.
main > java > com.portfolio > 아래에 controller, domain, mapper, service 폴더를 생성합니다.
main > resources > 아래에 mappers 폴더를 생성합니다.
main > 아래에 webapp 폴더를 생성하고, webapp > 아래에 resources 폴더를 생성합니다. 다시 webapp > 아래에 WEB-INF 폴더를 생성하고 jsp를 담을 views 폴더를 생성합니다.
main > resources > 아래에 application.properties를 작성합니다. application.properties는 DB 연결 정보와 jsp의 prefix, suffix 정보, mybatis 매핑 정보 등이 들어갑니다.
application.properties는 DB 연결 정보 등 중요한 정보가 있기 때문에 외부에 공개되어서는 안 됩니다. 형상 관리 시 .gitignore에 반드시 추가하여 정보 유출을 막아야 합니다.
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=spring.datasource.url=jdbc:mariadb://localhost:3306/portfolio
spring.datasource.username=root
spring.datasource.password=0000
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
mybatis.mapper-locations=classpath:mappers/**/*.xml