MINU Framework v3 - Developer Guide Help

기본 개념 이해하기

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 클래스가 위치한 패키지와 그 하위 패키지에서 빈을 스캔합니다.

@SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }

2.2 @ComponentScan 직접 설정 (특정 패키지만 스캔)

특정 패키지만 스캔하고 싶다면 다음과 같이 지정할 수 있습니다.

@ComponentScan(basePackages = {"kr.co.dandisoft.minu", "io.minu.damda"}) @SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }

2.3 @ComponentScan 직접 설정 (특정 패키지 제외 스캔)

특정 패키지를 제외하고 스캔하고 싶다면 다음과 같이 지정할 수 있습니다.

@ComponentScan(excludeFilters = @ComponentScan.Filter(type = FilterType.ASPECTJ, pattern = "kr.co.dandisoft.test.*")) @SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }

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 내용 예제

server: port: 8080 servlet: context-path: /myapp spring: datasource: url: jdbc:mysql://localhost:3306/mydb username: root password: secret driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: ddl-auto: update show-sql: true

4. 프로필 설정 방법

Spring Boot에서는 개발 환경(로컬, 개발, 운영 등)에 따라 설정을 다르게 적용할 수 있도록 프로필(Profile) 기능을 제공합니다.

4.1 application.yml에서 프로필 설정

spring: profiles: active: dev # 현재 활성화할 프로필 설정

4.2 환경별 application 파일 작성

  • application-dev.yml (개발 환경)

  • application-prod.yml (운영 환경)

# application-dev.yml server: port: 8081
# application-prod.yml server: port: 8082

4.3 실행 시 프로필 설정

애플리케이션 실행 시 특정 프로필을 활성화할 수 있습니다.

java -jar myapp.jar --spring.profiles.active=prod

또는 application.yml에서 직접 설정 가능합니다.

5. 추가로 알아야 할 필수 개념

5.1 Spring Boot 자동 설정(Auto Configuration)

Spring Boot는 @EnableAutoConfiguration을 사용하여 다양한 설정을 자동으로 구성합니다. 개발자는 불필요한 설정 작업을 줄이고 빠르게 개발할 수 있습니다.

5.2 Spring Boot Actuator

운영 환경에서 애플리케이션 상태를 모니터링할 수 있도록 다양한 엔드포인트를 제공합니다.

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>

5.3 Spring Boot DevTools

개발 도중 변경 사항을 즉시 반영할 수 있도록 도와주는 개발 도구입니다.

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> </dependency>

마무리

이 문서에서는 Spring Boot의 기초 개념을 정리하였습니다. 의존성 주입(DI), 컴포넌트 스캔, 설정 파일 구조, 프로필 관리 등은 Spring Boot를 사용할 때 반드시 숙지해야 하는 핵심 요소들입니다. 이를 잘 활용하면 유지보수성과 확장성이 뛰어난 애플리케이션을 개발할 수 있습니다.

데이터베이스 연동

  • JPA 기초

    • 엔티티 클래스 작성

    • 리포지토리 인터페이스 활용

  • 쿼리 작성

    • JPQL 기본 문법

    • QueryDSL 활용법

코드 생성기 사용법

  • 설정 파일 작성

    code-generator: package: base: io.minu.damda module: sys target-table: [테이블명]
  • 코드 생성 실행

    ./gradlew :_minu-code-gen:bootRun
Last modified: 20 March 2025