🛹 목표
목표 | 난이도 | 달성 여부 |
패스트 캠퍼스 강의 듣기 |
😘 | ✔️ |
알고리즘 문제풀이 | 🥺 | ✔️ |
📋 공부 내용 & 기록
스프링 Mutil Module 개념 학습
▶ Multi Module
- 필요한 기능별로 Module을 생성하여 서로 결합하여 사용
- 중복된 기능들을 모듈화하여 하나로 관리함으로써 리스크를 줄일 수 있음
- 멀티 모듈 구조에서는 원하는 모듈을 골라서 빌드, 배포 가능
▶ 모듈간 의존성 설정 방법
- root 프로젝트의 settings.gradle에 생성할 모듈을 작성 include {'참조하려는 모듈 이름'}
- 각 모듈의 settings.gradle은 제거(각 모듈에 존재한다면 루트의 settings.gradle보다 우선순위를 높게하여 확인)
- 현재 사용 중인 모듈에서 다른 모듈을 참조하려면 build.gradle의 dependencies에 implementation project({'참조하려는 모듈 이름'})을 입력한다.
▶ 컴포넌트 스캔하기
@SpringBootApplication(
scanBasePackages = { "dev.be.moduleapi", "dev.be.modulecommon" }
)
@EntityScan("dev.be.modulecommon.domain")
@EnableJpaRepositories(basePackages = "dev.be.modulecommon.repositories")
- 외부 모듈의 빈을 주입하기 위해서는 별도의 설정이 필요
- scanBasePackages에서 Bean으로 등록할 Package path를 지정해준다.
- JPA와 관련된 Entity와 Repository는 여기서 Scan이 되지 않아 @EntityScan, @EnableJpaRepositories 어노테이션을 별도로 사용해서 등록을 시도해야 한다.(명시적으로 등록해주지 않으면 컴파일 시점에 에러 발생)
▶ gradle로 빌드
- tasks.bootJar { enabled = false }
- 기본값 true
- 빌드 시에 xxx.jar 파일 생성
- 애플리케이션을 실행시키는데 필요한 파일, 클래스, 리소스, 디펜던시 내용을 추가
- tasks.jar { enabled true }
- 기본값 true
- 빌드 시에 xxx-plain.jar 파일 생성
- 클래스와 리소스만 포함(디펜던시를 갖고있지 않음)
- ex) ./gradlew clean :module-api:buildNeeded --stacktrace --info --refresh-dependencies -x test
- clean : 기존에 빌드되어 있는 폴더를 지우고 새로 빌드
- module-api:buildNeeded : 모듈-api를 빌드할 것
- --stacktrace : 로깅이나 예외가 발생했을 때 추적하기 위해 trace를 볼 것
- --info : 로깅 레벨을 설정할 것인데 debug -> info -> warn -> error 중 info 이상(info, warn ,error)으로 설정하겠다.
- --refresh-dependencies : 디펜던시를 한번 더 리프레쉬
- -x test : 테스트는 동작시키지 않고 빌드
▶ Profile이 필요한 이유(yaml 파일)
- 실제 회사에서 개발할 때 N개의 profile을 설정(local, dev, test, prod 등)
- 프로파일을 나누는 이유는 환경 별로 설정해야 하는 Property 값들이 다르기 때문
- 실제 프로젝트에서는 다음과 같은 파일로 환경 별 Property를 구분
- ex) application-{env}.yaml
- ex) application-local.yaml, application-pdev.yaml, application-prod.yaml
- 터미널에서 프로파일 설정방법 : java -jar -Dspring.profiles.active=local module-api-0.0.1-SNAPSHOT.jar
'TIL' 카테고리의 다른 글
[TIL] 🌱 2023.04.26 - Async (0) | 2023.04.26 |
---|---|
[TIL] 🌱 2023.04.25 - 상속과 컴포지션 (0) | 2023.04.25 |
[TIL] 🌱 2023.04.19 - ControllerAdvice, Actuator (0) | 2023.04.19 |
[TIL] 🌱 2023.04.10 - 스프링 시큐리티 세션 (0) | 2023.04.10 |
[TIL] 🌱 2023.04.01 - Projection (0) | 2023.04.01 |