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
μ§μ λ°ν
π μ°Έκ³