[Spring Boot]JPA 연동 - 1) 프로젝트 셋팅
요즘 많이 사용되는 Spring Boot와 JPA를 연동하여 간단한 예제를 하나 만들어보려고 합니다.
테스트 환경
- Spring Boot 2.5.6
- JDK 1.8
- MariaDB 10.2.22
1. 프로젝트 생성
1-1. New - Spring Boot - Spring Starter Project
Maven, Gradle 중 원하는 자원관리 타입을 선택하면 되고 자바 버전을 맞춰줍니다.
1-2. 의존성 추가(이후 필요한 의존성은 따로 추가) - Finish
Spring Boot 버전을 선택하고 기본적으로 필요한 것만 추가하였습니다.(Spring Web, MySQL 또는 MariaDB Driver, JDBC)
2. 테스트 페이지 생성
2-1. 프로젝트를 생성하게 되면 아래와 같은 화면을 확인할 수 있습니다.
2-2. 프로젝트 우클릭 - New - Folder - src/main/webapp/WEB-INF/views 추가
2-3. views 폴더안에 index.jsp 파일을 생성합니다.
2-4. index 페이지를 호출할 Controller를 생성합니다.(com.example.demo 패키지)
package com.example.demo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HomeController {
@RequestMapping(value="/")
public String main() {
return "index";
}
}
참고로 스프링 부트에서는 <component-scan>없이 Controller를 빈으로 등록할 수 있게 해주는 기능이 있습니다.
프로젝트 생성시(2-1) 프로젝트명(카멜케이스의 규칙) + Application.java 파일이 자동 생성되는 것을 확인할 수 있는데 해당 클래스를 보면 @SpringBootApplication 어노테이션이 있습니다.
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class TestBootApplication {
public static void main(String[] args) {
SpringApplication.run(TestBootApplication.class, args);
}
}
해당 어노테이션 소스를 확인해보면 @ComponentScan 어노테이션이 있습니다. 이 어노테이션이 main() 메소드가 포함된 TestBootApplication 클래스가 속하는 패키지를 기준으로(com.example.demo) 하여 빈 등록을 처리합니다.
3. 외부설정과 의존성 주입
3-1. src/main/resources/application.properties 설정
Spring Boot는 어플리케이션 작동시 application.properties 파일에 정의된 내용을 로드합니다. 이 때 jsp 페이지 처리를 위해 jsp 경로와 확장자를 등록해주는 작업입니다.
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
추가적으로 1-2에서 추가한 jdbc로 인해 에러를 방지하기 위해 DB 연결을 미리해줍니다.
# DB
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3306/DBNAME
spring.datasource.username=root
spring.datasource.password=1234
3-2. pom.xml 설정
1-2에서 추가한 의존성(spring-boot-starter-web)에 의해 tomcat을 내장하고 있지만 jsp 파일을 구동할 수 있는 엔진은 포함하고 있지 않습니다. 따라서 jsp 엔진 역할을 하는 라이브러리를 추가합니다.
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
4. 서버 구동
4-1. 프로젝트 우클릭 - Run As - Spring Boot App
어플리케이션이 정상 작동하면 아래와 같이 로그가 조회됩니다.
4-2. localhost:8080 확인
application.properties에서 포트를 따로 설정하지 않았다면 기본 포트는 8080입니다.
참고자료
+피드백은 언제나 환영입니다 :)