상세 컨텐츠

본문 제목

[SPRING BOOT] 환경설정

JAVA/SPRING

by ranlan 2021. 3. 13. 21:52

본문

728x90

jpa를 공부하며 로그인, 카테고리별 게시판 등 간단한 기능들이 있는 서비스를 하나 만들어 보기로 결심하였다.

스프링 시큐리티, querydsl, jpql 등등 직접 사용해 보고 jpa에 대한 감을 잡는 것이 목표!

스프링 프레임워크를 사용한 웹 개발이 아직 능숙하지 않아 좀 더 어려움이 많을 것으로 예상되지만.. 화이팅이다.. 👊🏻👩🏻‍💻

 

 

[GitHub] github.com/ijo0r98/springboot-jpa

 

ijo0r98/springboot-jpa

혼자하는 spring boot jpa 공부. Contribute to ijo0r98/springboot-jpa development by creating an account on GitHub.

github.com

 

 

프로젝트 생성 

spring initializr(start.spring.io/)로 스프링 부트 프로젝트 생성

 

dependency

 

 

환경설정 

application.properties

스프링 부트가 애플리케이션을 구동할 때 자동으로 로딩하는 파일

 

1. DB 설정

# MySQL
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://{host}:{port}/{db_name}?serverTimezone=UTC&characterEncoding=UTF-8
spring.datasource.username={username}
spring.datasource.password={password}
spring.datasource.initialization-mode=always

spring.datasource.initialization-mode=always

- 외장 DB 초기화 가능

spring.datasource.data={sql파일경로}

- 지정된 파일의 sql 실행

- DB종류에 따라 다른 스크립트를 사용할 시 spring.datasource.platform={db_type} 설정 후 사용

 

2. JPA 설정

# JPA
spring.jpa.show-sql=true
spring.jpa.database=mysql
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.show_sql=false
spring.jpa.properties.hibernate.format_sql=true

# log just the SQL
logging.level.org.hibernate.SQL=DEBUG

spring.jpa.hibernate.ddl-auto (* DDL 자동생성은 운영서버에서는 사용하지 말 것)

- create: 기존 테이블 삭제 후 다시 생성

- create-drop: 종료 시점에서 테이블 삭제

- update: 변경 사항만 반영

- validate: 변경된 매핑 정보가 있다면 애플리케이션 종료

- none: 사용하지 않음

sprng.jpahibernate.sho_sql=false

- true일 때 하이버네이트에서 생성하는 쿼리와 system.out으로 찍히는 쿼리를 둘 다 보여줌

- false로 지정 후 하이버네이트 sql 로깅에 대한 설정을 따로 해주는 것 추천

spring.jpa.properties.hibernate.format_sql=true

- 생성된 쿼리문 가독성 좋게 표시

logging.level.org.hibernate.SQL=DEBUG

- logger로 생성된 쿼리 보여줌

 

3. VIEW (JSP & Thymeleaf)

[참고] 2021.03.27 - [web] - 템플릿 엔진

 

템플릿 엔진

 템플릿 엔진 이란? 동적 컨텐츠를 생성하는 방법 (스프링 MVC 중 VIEW에 해당) jsp, thymeleaf,  Apache Freemarker, Mustache, Groovy Templates 등 여러 템플릿 엔진 존재 클라이언트 사이드 템플릿 엔진 -..

juran-devblog.tistory.com

# JSP
spring.mvc.view.prefix=/WEB-INF/jsp/ 
spring.mvc.view.suffix=.jsp 

# Thymeleaf
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html 
spring.thymeleaf.cache=false 
spring.thymeleaf.view-names=thymeleaf/

* spring-boot-starter에 포함된 tomcat은 JSP엔진을 포함하지 않아 추가 설정 필요

prefix(접두어): 디렉터리 경로

suffix(접미어): 파일 확장자

spring.thymeleaf.cache=false

- 캐시에 저장하지 않음 (실무에서는 true)

spring.thymeleaf.view-names=thymeleaf/

- 뷰 구분을 위해 컨트롤러가 뷰 반환 시 'thymleaf/'로 시작하면 타임리프로 처리하도록 지정

 

4. 자동 빌드

# Build
spring.devtools.livereload.enabled=true
spring.mvc.hiddenmethod.filter.enabled=true

spring.devtools.livereload.enabled=true

- VIEW가 바뀌었을 때 자동으로 리로드 설정

spring.mvc.hiddenmethod.filter.enabled=true

- 컨트롤러, 모델단(classpath에 있는 모든 파일)이 바뀌었을 때 프로젝트 재시작 설정

 

 

build.gralde

빌드와 의존성 관리 (Maven을 사용하는 Spring에서는 Porm.xml에서 주로 의존성과 빌드 관리)

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'

    // security
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.security:spring-security-taglibs'

    compileOnly 'org.projectlombok:lombok'
    
    // devtool 자동빌드
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    runtimeOnly 'mysql:mysql-connector-java'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    // Junit4
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
    exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }

    // jsp
    compile('org.apache.tomcat.embed:tomcat-embed-jasper')
    compile('javax.servlet:jstl:1.2')
}

 

 

 

728x90

'JAVA > SPRING' 카테고리의 다른 글

[WEB] RESTful API 만들기  (0) 2021.03.22
[JPA] 게시판 CRUD  (0) 2021.03.21
[SPRING SECURITY] 스프링 부트 환경설정  (0) 2021.03.14
[SPRING SECURITY] 스프링 시큐리티란  (0) 2021.03.14
[SPRING BOOT] 디렉터리 구조  (0) 2021.03.13

관련글 더보기

댓글 영역