프로젝트 생성
프로젝트 설정을 해준다.
프로젝트에서 사용할 의존성을 추가한다.
plugins {
id 'java'
id 'org.springframework.boot' version '2.5.6'
id 'io.spring.dependency-management' version '1.1.0'
}
group = 'com.toy'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
annotationProcessor 'org.projectlombok:lombok'
implementation 'mysql:mysql-connector-java'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
build.gradle은 이런 형태로 되어 있다.
여기서 스프링 부트 버전을 2.5.6으로 변경해 주었다.
그리고 spring data jpa, mysql을 연동하기 위하여 dependencies에 다음과 같이 추가해줬다.
implementation 'mysql:mysql-connector-java'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
application.properties에 db정보를 추가한다.
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/[db이름]?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul
spring.datasource.username=[username]
spring.datasource.password=[password]
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.format_sql=true
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
연동하려는 데이터베이스의 드라이버를 정의한다.
spring.jpa.show-sql=true
jpa 쿼리문을 확인할 수 있다.
spring.jpa.properties.hibernate.format_sql=true
jpa의 구현체인 Hibernate가 동작하면서 발생한 SQL의 가독성을 높여준다.
spring.jpa.hibernate.ddl-auto=
- create : 기존 테이블을 삭제하고 새로 생성
- create-drop : CREATE 속성에 추가로 어플리케이션을 종료할 때 테이블을 제거
- update : DB 테이블과 엔티티 매핑 정보를 비교해서 변경 사항만 수정 (테이블이 없을 경우 CREATE)
- validate : DB 테이블과 엔티티 매핑정보를 비교해서 차이가 있으면 에러가 발생
- none : 자동 생성 기능(ddl-auto)을 사용하지 않음
운영 환경에서는 대체로 validate와 none을 사용한다고 한다.
개발 환경에서는 create 또는 update를 사용한다.
설정 후, 정상적으로 애플리케이션이 실행되면 성공이다.
이렇게 프로젝트 세팅을 마쳤다.
마지막으로 개발에 앞서 Application 클래스를 살펴보겠다.
package com.toy.projectmate;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ProjectmateApplication {
public static void main(String[] args) {
SpringApplication.run(ProjectmateApplication.class, args);
}
}
이 클래스는 이 프로젝트의 메인 클래스이다.
@SpringBootApplication으로 인해 스프링 부트의 자동 설정, 스프링 Bean 읽기와 생성이 모두 자동으로 설정된다.
@SpringBootApplication이 있는 위치부터 설정을 읽어나가기 때문에 이 클래스는 항상 프로젝트의 최상단에 위치해야만 한다.
main 메소드에서 실행하는 SpringApplication.run으로 인해 내장 WAS(Web Application Server)가 실행된다.
내장 WAS란 별도로 외부에 WAS를 두지 않고 애플리케이션을 실행할 때 내부에서 WAS를 실행하는 것이다.
이렇게 되면 항상 서버에 톰캣을 설치할 필요가 없게 되고, 스프링부트로 만들어진 Jar 파일(실행 가능한 Java 패키징 파일)로 실행하면 된다.
내장 WAS를 사용하면 언제 어디서나 같은 환경에서 스프링 부트를 배포할 수 있다.
'BACK > SPRING' 카테고리의 다른 글
Spring Boot Project(4) - JPA Auditing으로 생성/수정 시간 자동화 (0) | 2023.01.24 |
---|---|
Spring Boot Project(3) - 게시글 CRUD (0) | 2023.01.24 |
[Spring] 컴포넌트 스캔 / @Autowired (0) | 2023.01.17 |
[Spring Boot] List를 Page로 변환하기 (0) | 2023.01.09 |
[Spring] DI / IoC, 컨테이너, 의존성 주입 방법 (0) | 2023.01.09 |