기본 개념 이해하기
Spring Boot 기초 가이드
Spring Boot는 Spring Framework를 기반으로 한 프레임워크로, 설정을 최소화하고 빠르게 애플리케이션을 개발할 수 있도록 도와줍니다. 이 문서에서는 Spring Boot를 사용할 때 반드시 알아야 할 핵심 개념들을 정리하였습니다.
1. 의존성 주입(DI) 및 @Autowired, @Resource 사용법
의존성 주입(Dependency Injection, DI)은 객체 간의 결합도를 낮추고 유연한 코드 구조를 만들기 위한 중요한 개념입니다. Spring Boot에서는 @Autowired 및 @Resource 어노테이션을 사용하여 의존성을 주입할 수 있습니다.
※ MINU Framework 에서는 의존성 주입 시 required 속성을 사용하고자 하는 경우를 제외하고 @Resource 어노테이션을 사용합니다.
1.1 @Autowired
@Autowired는 Spring의 대표적인 의존성 주입 어노테이션으로, Spring 컨테이너에서 자동으로 빈(Bean)을 찾아 주입해 줍니다.
주의할 점
기본적으로
@Autowired는 타입을 기준으로 빈을 찾습니다.생성자 주입을 권장합니다. (불변성과 테스트 용이성을 보장)
1.2 @Resource
@Resource는 Java의 JSR-250 표준 어노테이션으로, 빈의 이름을 기준으로 주입합니다.
차이점 정리
어노테이션 | 주입 방식 |
|---|---|
@Autowired | 타입 기준 자동 주입 |
@Resource | 이름 기준 주입 (없으면 타입 기준) |
2. 컴포넌트 스캔 이해하기
Spring Boot는 @ComponentScan을 사용하여 특정 패키지에서 빈을 자동으로 검색하고 등록합니다.
2.1 @ComponentScan 기본 동작
@SpringBootApplication 어노테이션 내부에는 @ComponentScan이 포함되어 있어, 기본적으로 Application 클래스가 위치한 패키지와 그 하위 패키지에서 빈을 스캔합니다.
2.2 @ComponentScan 직접 설정 (특정 패키지만 스캔)
특정 패키지만 스캔하고 싶다면 다음과 같이 지정할 수 있습니다.
2.3 @ComponentScan 직접 설정 (특정 패키지 제외 스캔)
특정 패키지를 제외하고 스캔하고 싶다면 다음과 같이 지정할 수 있습니다.
3. application.yml 구조
Spring Boot 설정 파일은 application.yml 형식으로 작성할 수 있습니다.
MINU Framework에서는 application.yml을 서버환경에 맞는 설정을 로드하도록 분리하여 설정하였습니다.
yml 파일 목록
application.yml
application-local.yml
application-dev.yml
application-prod.yml
application-base.yml
application-domain.yml
application-routes.yml
application-log.yml
yml 내용 예제
4. 프로필 설정 방법
Spring Boot에서는 개발 환경(로컬, 개발, 운영 등)에 따라 설정을 다르게 적용할 수 있도록 프로필(Profile) 기능을 제공합니다.
4.1 application.yml에서 프로필 설정
4.2 환경별 application 파일 작성
application-dev.yml(개발 환경)application-prod.yml(운영 환경)
4.3 실행 시 프로필 설정
애플리케이션 실행 시 특정 프로필을 활성화할 수 있습니다.
또는 application.yml에서 직접 설정 가능합니다.
5. 추가로 알아야 할 필수 개념
5.1 Spring Boot 자동 설정(Auto Configuration)
Spring Boot는 @EnableAutoConfiguration을 사용하여 다양한 설정을 자동으로 구성합니다. 개발자는 불필요한 설정 작업을 줄이고 빠르게 개발할 수 있습니다.
5.2 Spring Boot Actuator
운영 환경에서 애플리케이션 상태를 모니터링할 수 있도록 다양한 엔드포인트를 제공합니다.
5.3 Spring Boot DevTools
개발 도중 변경 사항을 즉시 반영할 수 있도록 도와주는 개발 도구입니다.
마무리
이 문서에서는 Spring Boot의 기초 개념을 정리하였습니다. 의존성 주입(DI), 컴포넌트 스캔, 설정 파일 구조, 프로필 관리 등은 Spring Boot를 사용할 때 반드시 숙지해야 하는 핵심 요소들입니다. 이를 잘 활용하면 유지보수성과 확장성이 뛰어난 애플리케이션을 개발할 수 있습니다.
데이터베이스 연동
JPA 기초
엔티티 클래스 작성
리포지토리 인터페이스 활용
쿼리 작성
JPQL 기본 문법
QueryDSL 활용법
코드 생성기 사용법
설정 파일 작성
code-generator: package: base: io.minu.damda module: sys target-table: [테이블명]코드 생성 실행
./gradlew :_minu-code-gen:bootRun