서버 실행시 DB 테이블에 미리 데이터를 넣을 필요가 있을경우 사용(기본 or 필수 데이터) 3가지 방법이 있다.
- 데이터 넣기 (data.sql)
- resources -> data.sql 생성 -> 쿼리문 작성
- yml 파일 수정
- defer-datasource-initialization : 'true' 설정
- sql init mode always 설정
...
spring:
jpa:
...
defer-datasource-initialization: 'true'
sql:
init:
continue-on-error: 'true'
mode: always
...
- 데이터 넣기 (@Transactional, @EventListener 어노테이션 이용)
- @Component 를 이용해 클래스 생성
- 클래스 내 init 함수 작성하고, 함수 위에 @EventListener(ApplicationReadyEvent.class) 어노테이션, @Transactional 추가
- 클래스 내부에 데이터를 생성, service 를 통해 save 하는 함수 호출
- 데이터 넣기 (ApplicationRunner 상속)
- 클래스 생성 -> 클래스에 @Component 어노테이션 추가 -> ApplicationRunner 클래스 상속
- 상속받은 클래스의 run 함수를 override
- 서비스를 클래스의 맴버변수에 Inject 받고,
- run 함수 내부에서 데이터 생성, 서비스를 통해 저장
'Backend > SpringBoot' 카테고리의 다른 글
전반적인 프로젝트 구조 (0) | 2024.11.26 |
---|---|
@Mapper, @Mapping (0) | 2024.11.20 |
AOP (함수 실행 intercept) (0) | 2024.10.30 |
QueryDSL (0) | 2024.10.30 |
DB 연결 설정 (0) | 2024.10.29 |