- Project
Gradle
빌드 툴- Dependencies
Spring Web
Thymeleaf
Lombok
Spring Data JPA
: 지금Spring Data JPA
는 안쓰지만 여기에JPA
설정들이 있어서 선택H2 DataBase
spring-boot-starter-web
spring-boot-starter-tomcat
: 톰캣(웹서버)spring-webmvc
: 스프링 웹 MVC
spring-boot-starter-thymeleaf
: 타임리프 템플릿 엔진(View)
spring-boot-starter-data-jpa
spring-boot-starter-aop
spring-boot-starter-jdbc
HikariCP
: 커넥션 풀hibernate + JPA
: Hibernate와 JPAspring-data-jpa
: 스프링 데이터 JPA
spring-boot-starter(공통)
:스프링 부트
+스프링 코어
+로깅
spring-boot
spring-core
spring-boot-starter-logging
logback
/slf4j
:slf4j
는 인터페이스 /logback
은 구현체
Server-Side
에서html
을 내려주는 방식의 템플릿 엔진
(Client-Side 템플릿 엔진도 존재)
--> 요즘에는 이러한템플릿 엔진
보다Client-Side Rendering
하는React
/Vue
많이 사용- 다른 템플릿 엔진과 다르게 기존 MarkUp을 깨지 않는
자연스러운 템플릿 엔진
이다- Spring에서 밀고있는 템플릿 엔진
resource/templates/~~.html
로 두고 사용
1. Lombok Plugin 다운로드
Preferences
->Plugins
->Lombok
검색 & 다운로드
2. Annotation Processor 활성화
Preferences
->Compiler
->Annotation Processors
Preferences
->gradle 검색
- 최근
Intellij
버전은Gradle로 실행
을 하는 것이 기본설정Gradle
로 하면 실행 속도가 느리기 때문에java
로 변경해서 사용
1. H2 Database 설치
- 이전에 포스팅했던 글로 대체
- H2 DataBase 설정 관련 이전 글
2. application.yml 설정
spring: datasource: url: jdbc:h2:tcp://localhost/~/jpashop username: sa password: driver-class-name: org.h2.Driver
[ 설명 ]
- 개발에
자동 재시작
/실시간 변경
등 기능을 사용하기 위한 플러그인Automatic Restart
: 변경 내용에 따라서버를 알아서 재시작
해주는 옵션Live reload
: 실시간 변경을rebuild
가 아닌recompile
로 반영하는 것
(추가로, 크롬의reload 확장 툴
을 받으면 알아서 해줌)
[ 설정 ]
1. Registry 설정 변경
- 2021년 2월 이후로 해당 옵션이 없어짐
=> Preferences에서 최하단에 있는 Advanced Settings에서 "Allow auto-make to stat even if developed application is currently running"을 체크2. Preferences 설정
3. build.gradle에 의존성 추가
// build.gradle configurations{ developmentOnly{ runtimeClasspath{ extendsFrom developmentOnly } } } dependendies{ ... implementation 'org.springframework.boot:spring-boot-devtools' ... }
4. application.yml에 설정 추가
spring: devtools: livereload: enabled: true freemarker: cache: false
- 기존에는
persistence.xml
파일에서 설정했으나스프링 부트
로 넘어오면서 해당 설정을 해준다- 우리는
hibernate 옵션 지정
만 해주면 된다1. application.yml 설정
(
application.yml
파일은띄어쓰기 2개
로 영역 구분하며 조금이라도 다르면실행 X
- 주의!)spring: # h2 DB 설정 datasource: url: jdbc:h2:tcp://localhost/~/jpashop username: sa password: driver-class-name: org.h2.Driver # jpa 설정 jpa: hibernate: ddl-auto: create properties: hibernate: format_sql: true # devtools 설정 devtools: livereload: enabled: true freemarker: cache: false logging.level: org.hibernate.SQL: debug
2. 테스트 코드로 확인
@SpringBootTest
:스프링 부트 테스트
를 알리는 어노테이션
필드 의존성 주입
으로MemberRepository
가져오기
:필드 의존성 주입
은 테스트코드 작성시에는 유용하게 사용됨 (실무에서는 X)
@Transactional
: 기존에트랜잭션
을시작
해주고종료
해주는 코드가 필요했지만, 해당 어노테이션의 사용으로
트랜잭션 처리
가 알아서 된다.
그리고, 해당 어노테이션이Test코드
에 있을 때는 수행 후자동 Rollback
을 한다
@Rollback(false)
:@Tansactional
로 자동 롤백되는 것을 막아 실제 DB에 수행 결과를 남기는 어노테이션
Entity Manager
가 없는 이유? : 이제 실제 DB에 접근하는Repository
에서@PersistenceContext
를 통해 EntityManager를 자동으로 주입해줄 수 있기 때문3. query Parameter 추적 설정
- 실제로 들어가는
query Parameter
를org.hibernate.type: trace
로 추가 가능- 이것보다 더 가시적으로 좋게 하기 위해서,
p6spy
라는외부 라이브러리
를 사용!!
:의존성 추가
를 해주고기존 trace 옵션을 꺼주면
이렇게 멋지게 나온다!
테스트 코드
를 작성할 때 마다기본 틀
을 작성하는 것이 귀찮을 경우명령어
로 등록 가능template
에서custom
을 만들고 내부에tdd
를 추가하면 된다