본문 바로가기
스프링 부트3

스프링 부트 3 프로젝트 구조 이해

by 굿센스굿 2024. 12. 5.
반응형

 

스프링 부트 3는 현대적인 웹 애플리케이션 개발의 핵심 프레임워크로 자리 잡았습니다. 이 글에서는 스프링 부트 3 프로젝트의 구조를 이해하는 데 필요한 기본적인 구성 요소를 상세히 살펴보겠습니다. 이를 통해 스프링 부트 프로젝트의 구조를 명확히 이해하고 효과적으로 활용할 수 있도록 돕겠습니다. 또한, 각 구성 요소의 역할과 세부 내용에 대한 예시를 3가지 이상 제공하겠습니다.


1. 스프링 부트 3 프로젝트 구조 개요

스프링 부트 프로젝트는 Maven이나 Gradle 같은 빌드 도구를 사용하여 구성됩니다. 기본적인 프로젝트 구조는 다음과 같이 구성됩니다.

프로젝트 루트/
├── src/
│   ├── main/
│   │   ├── java/            # Java 소스 코드
│   │   ├── resources/       # 설정 파일 및 리소스
│   ├── test/                # 테스트 코드
├── pom.xml 또는 build.gradle # 빌드 설정 파일

이 구조를 통해 개발자는 애플리케이션의 기능을 논리적으로 나누고 유지 보수를 용이하게 할 수 있습니다.


2. 주요 디렉토리 및 파일 설명

2.1 src/main/java

  • 역할: 애플리케이션의 핵심 비즈니스 로직이 구현되는 공간입니다.
  • 구성:
    • com.example.demo와 같은 패키지 구조를 사용해 계층형 구조를 구성합니다.
    • 주로 사용되는 계층:
      • Controller: 요청과 응답을 처리.
      • Service: 비즈니스 로직 담당.
      • Repository: 데이터베이스와의 상호작용 관리.

예시 1: Controller 클래스

@RestController
@RequestMapping("/api")
public class UserController {

    @GetMapping("/users")
    public List<String> getAllUsers() {
        return List.of("Alice", "Bob", "Charlie");
    }
}

예시 2: Service 클래스

@Service
public class UserService {

    public List<String> getUsers() {
        return List.of("Alice", "Bob", "Charlie");
    }
}

예시 3: Repository 클래스

@Repository
public class UserRepository {

    public List<String> findAllUsers() {
        // 데이터베이스 조회 로직 구현
        return List.of("Alice", "Bob", "Charlie");
    }
}

2.2 src/main/resources

  • 역할: 설정 파일, 정적 리소스, 템플릿 파일 등을 포함합니다.
  • 주요 파일:
    • application.properties 또는 application.yml: 애플리케이션 설정.
    • static/: 정적 파일 (HTML, CSS, JS 등).
    • templates/: Thymeleaf와 같은 템플릿 엔진 파일.

예시 1: application.yml

server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/demo
    username: root
    password: password

예시 2: 정적 리소스

  • src/main/resources/static/style.css
body {
    font-family: Arial, sans-serif;
}

예시 3: 템플릿 파일

  • src/main/resources/templates/index.html
<!DOCTYPE html>
<html>
<head>
    <title>Welcome</title>
</head>
<body>
    <h1>Welcome to Spring Boot 3!</h1>
</body>
</html>

2.3 src/test/java

  • 역할: 애플리케이션의 유닛 테스트와 통합 테스트를 작성합니다.
  • 사용되는 도구: JUnit, Mockito 등.
  • 구성: 테스트 파일은 소스 코드와 동일한 패키지 구조를 따라야 합니다.

예시: JUnit 테스트

@SpringBootTest
public class UserServiceTest {

    @Autowired
    private UserService userService;

    @Test
    public void testGetUsers() {
        List<String> users = userService.getUsers();
        assertEquals(3, users.size());
    }
}

3. 프로젝트 루트 파일

3.1 pom.xml (Maven)

스프링 부트 프로젝트의 의존성을 관리하는 핵심 파일입니다.

예시:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
</dependencies>

3.2 build.gradle (Gradle)

Gradle을 사용하는 경우, 의존성을 설정하는 데 사용됩니다.

예시:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
}

4. 프로젝트 구조 설계 시 유의점

  1. 계층 분리: 각 클래스는 특정 역할만 담당하도록 설계.
  2. 설정 관리: application.yml과 같은 설정 파일을 환경별로 나누어 관리.
  3. 테스트 작성: 모든 계층에 대해 충분한 테스트를 작성해 신뢰성을 확보.

스프링 부트 3 프로젝트의 구조를 잘 이해하고 활용하면 개발 속도와 품질을 동시에 높일 수 있습니다. 위의 구조와 예시를 참고하여 자신만의 프로젝트를 설계해 보세요!

반응형