spring-core-1에서는 @Component, @Autowired를 통해 spring bean간 의존성 주입을 해주는 것을 배웠는데, spring-core-2에서는 Java-based Configuration을 작성해 의존성 주입 해주는 방법을 배우게 되었다!
Configuration Type별 장단점
Configuration Type에는 XML, Annotation-based, Java-based가 있다!
XML
- 장점
- 설정을 한눈에 보기에 용이하다
- Class 파일들과 설정을 분리함으로써, 관심사의 분리
- 간단한 설정 변경은 별도의 컴파일 없이도 적용 가능
- 단점
- type safe하지 않다
- 오타가 발생했을 때, debugging이 어렵다
- JVM에 부하가 생긴다
Annotation-based
- 장점
- Java code로 작성해, type safe하다
- 클래스 파일만 봐도, 설정을 쉽게 파악할 수 있다
- 단점
- POJO 개념에서 멀어진다
- 설정이 변경될 경우 Application code 클래스 파일을 수정해야한다.
- 변경사항 있을 경우 컴파일이 필요
Java-based
- 장점
- Java code로 작성해, type safe하다
- 설정이 별도의 파일로 분리되어, 관심사의 분리
- 한 곳에서 Application Configuration을 나타낼 수 있음
- 설정을 변경할 때, 어플리케이션 코드를 수정할 필요 없음
- 단점
Profile 분리 이유
- 로컬에서 테스트를 하다가, 실제 운영 중인 DB의 테이블을 삭제하거나, 변경할 수도 있다
- Local의 코드 변경이 CI/CD를 통해 Prod 환경에 올라갈 수 있다
- 하나의 설정 파일만 가지고 있다면, Local, Dev, Prod 전환 시 파일을 매번 수정해야함
- 분리하면 환경에 따라 다른 DB를 사용할 수 있다
잘 봤습니다!