Code Convention (SpringBoot) - Ureca-Middle-Project-Team4/4EVER0-BE GitHub Wiki

🧾 Code Convention (SpringBoot)

πŸ“ ν”„λ‘œμ νŠΈ ꡬ쑰

src/main/java/com/team4ever/backend/
β”œβ”€β”€ BackendApplication.java
β”œβ”€β”€ global/                 # μ „μ—­ μ„€μ • 및 μ˜ˆμ™Έ, 응닡 λ“± 곡톡 λͺ¨λ“ˆ
β”‚   β”œβ”€β”€ config/             # Swagger λ“± μ„€μ • 클래슀
β”‚   β”œβ”€β”€ exception/          # μ „μ—­ μ˜ˆμ™Έ 처리
β”‚   └── response/           # 곡톡 응닡 포맷
β”œβ”€β”€ domain/                 # 도메인 별 폴더 λΆ„λ₯˜
β”‚   └── plan/               # 도메인 λͺ…
β”‚       β”œβ”€β”€ controller/     # REST 컨트둀러
β”‚       β”œβ”€β”€ service/        # λΉ„μ¦ˆλ‹ˆμŠ€ 둜직
β”‚       β”œβ”€β”€ repository/     # JPA 리포지토리
β”‚       └── entity/         # JPA μ—”ν‹°ν‹°
└── common/                 # 곡용 μœ ν‹Έ, μƒμˆ˜ λ“±

πŸ›  개발 κ·œμΉ™

βœ… Java 버전 및 λΉŒλ“œ

  • Java 17
  • Gradle μ‚¬μš© (8.14 κΈ°μ€€)
  • Spring Boot 3.5.x
  • JAR λΉŒλ“œ μ‹œ 버전 ꡬ뢄 없이 backend.jar둜 κ³ μ •

βœ… μ˜μ‘΄μ„± 관리

  • spring-boot-starter-web, data-jpa, data-redis, springdoc-openapi
  • lombok, h2, mysql-connector-j
  • .env 둜컬 ν™˜κ²½ 관리 (dotenv-java μ‚¬μš©)

βœ… ν™˜κ²½ 뢄리

  • application.yml μ—μ„œ ${ENV_VAR} ν˜•νƒœ μ‚¬μš©
  • .env + GitHub Actions Secrets 둜 ν™˜κ²½ λ³€μˆ˜ 관리

πŸ“„ Swagger μ„€μ •

  • μœ„μΉ˜: global/config/SwaggerConfig.java
  • springdoc-openapi-starter-webmvc-ui:2.2.5 μ‚¬μš©
  • Swagger UI 접속법: /swagger-ui.html
@Configuration
public class SwaggerConfig {
    @Bean
    public OpenAPI openAPI() {
        return new OpenAPI().info(new Info()
            .title("4EVER0 API")
            .description("4EVER0 Swagger λ¬Έμ„œ")
            .version("v1.0"));
    }

    @Bean
    public GroupedOpenApi publicApi() {
        return GroupedOpenApi.builder()
            .group("public-api")
            .pathsToMatch("/**")
            .build();
    }
}

🚨 μ˜ˆμ™Έ 및 응닡 처리

  • μ „μ—­ μ˜ˆμ™Έ ν•Έλ“€λŸ¬: global/exception/GlobalExceptionHandler
  • 곡톡 응닡 포맷: global/response/ApiResponse.java
  • μ‹€νŒ¨ 응닡도 ApiResponse.fail(...) ν˜•νƒœ μ‚¬μš©

πŸ§ͺ ν…ŒμŠ€νŠΈ

  • κΈ°λ³Έ ν…ŒμŠ€νŠΈ 클래슀: BackendApplicationTests
  • ν…ŒμŠ€νŠΈμš© DB: application-test.yml β†’ H2 λ©”λͺ¨λ¦¬ DB
  • CIμ—μ„œλŠ” .env λ˜λŠ” GitHub Secrets 기반으둜 ν…ŒμŠ€νŠΈ
  • μ‹€νŒ¨ μ‹œ :test μ œμ™Έν•΄λ„ 무방 (./gradlew build -x test)

🧬 GitHub Actions (CI)

  • 브랜치: main, dev push/pull μ‹œ λ™μž‘
  • ν…ŒμŠ€νŠΈ, λΉŒλ“œ, μΊμ‹œ, μ•„ν‹°νŒ©νŠΈ μ—…λ‘œλ“œ 포함

πŸ“Œ 넀이밍 κ·œμΉ™

  • 클래슀λͺ…: PascalCase
  • λ©”μ„œλ“œ/λ³€μˆ˜λͺ…: camelCase
  • μ—”ν‹°ν‹°: λ‹¨μˆ˜ν˜• (User, Plan)
  • 리포지토리: PlanRepository
  • μ„œλΉ„μŠ€: PlanService
  • 컨트둀러: PlanController

πŸ™…β€β™€οΈ κΈˆμ§€ 사항

  • ν•˜λ“œμ½”λ”©λœ DB URL, λΉ„λ°€λ²ˆν˜Έ λ“±
  • ν•œ 쀄에 μ—¬λŸ¬ μ±…μž„μ„ μ§€λŠ” λ©”μ„œλ“œ
  • κ³΅ν†΅λœ 응닡 포맷 없이 ResponseEntity 직접 λ°˜ν™˜

πŸ“š μ°Έκ³