appling 프로젝트
-
[appling] 나머지 Controller 작업 및 Test Code 추가 작성appling 프로젝트 2024. 9. 8. 23:44
🔴 나머지 Controller 작업🟠 put, get🟢 put@ApiController@RequiredArgsConstructor@Tag(name = "Product", description = "Product API Documentation")public class ProductController { private final ProductService productService; ... @PutMapping("/product") @Operation(summary = "상품 수정", description = "상품 수정 api") @ApiResponses(value = { @ApiResponse(responseCode = "200", descriptio..
-
[appling] Controller 예외처리 (Advice, Validation)appling 프로젝트 2024. 9. 8. 16:40
🔴 Controller 예외처리🟠 Controller 유효성 검사 예외처리@ApiController@RequiredArgsConstructor@Tag(name = "Product API", description = "Product API Documentation")public class ProductController { private final ProductService productService; @PostMapping("/product") @Operation(summary = "상품 등록", description = "상품 등록 api") @ApiResponses(value = { @ApiResponse(responseCode = "201", descri..
-
[appling] Controller 추가하기 (Api Annotation 추가, Swagger 적용)appling 프로젝트 2024. 9. 8. 13:10
🔴 Controller 만들기지금까지 Service만 작성하고 실제로 Controller는 작성하지 않았다. 이제 Controller를 적용해보자.🟠 Controller 적용하기🟢 기존 Controller 쓰기@RestController@RequestMapping("/api/v1")public class ProductController {}RestController를 적용하고 기본 값으로 /api/v1을 붙여주려고 한다. 근데 만드는 Controller마다 붙이는게 너무 귀찮을거 같아 Annotation으로 설정하려고 하다.🟢 @ApiController 만들기@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@RestController@Re..
-
[appling] Querydsl 적용하기 (with. SpringBoot 3.3, build.gradle.kts)appling 프로젝트 2024. 9. 5. 08:52
🔴 Querydsl리스트를 불러오려고 했는데 페이징 처리가 필요해졌다. 페이징 처리를 할때 Querydsl을 적용하여 진행하면 좋을거 같아. Querydsl을 적용시키려고 한다.🟠 설정🟢 gradledependencies { ... // ✅ querydsl을 설치합니다. ":jakarta"를 꼭 설정합니다 implementation("com.querydsl:querydsl-jpa:5.0.0:jakarta") annotationProcessor("com.querydsl:querydsl-apt:5.0.0:jakarta") // java.lang.NoClassDefFoundError(jakarta.persistence.Entity) 발생 대응 annotationProces..
-
[appling] Domain 테스트코드 작성appling 프로젝트 2024. 9. 4. 13:28
🔴 Domain🟠 jacoco 수정tasks.jacocoTestCoverageVerification { violationRules { rule { enabled = true element = "CLASS" // 라인 커버리지를 최소한 80% limit { counter = "LINE" value = "COVEREDRATIO" minimum = "1.00".toBigDecimal() } // 브랜치 커버리지를 최소한 90% limit { cou..
-
[appling] Product 수정appling 프로젝트 2024. 9. 4. 12:46
🔴 Product 상품 수정🟠 도메인 정리🟢 Request@Getter@Builder@AllArgsConstructor@NoArgsConstructorpublic class PutProductRequest { @JsonProperty("product_id") @NotNull(message = "상품 번호를 입력해 주세요.") private Long productId; @NotNull(message = "상품명을 입력해 주세요.") @JsonProperty("product_name") private String productName; @NotNull(message = "상품 무게를 입력해 주세요.") @JsonProperty("product_weight") ..
-
[appling] poroduct 등록appling 프로젝트 2024. 9. 4. 12:35
🔴 Product 상품 등록상품은 다음과 같이 domain을 작성하였었다. 이 설계에 맞춰서 상품을 작성해보자.🟠 도메인 정리🟢 Entity@MappedSuperclasspublic class CommonEntity { protected LocalDateTime createdAt; protected LocalDateTime modifiedAt; @PrePersist public void prePersist() { this.createdAt = LocalDateTime.now(); this.modifiedAt = LocalDateTime.now(); }}createdAt, modifiedAt의 경우 모든 Entity가 동일하게 가져갈 구조라 해당 값..
-
[appling] 코드품질 관련 설정 (jacoco)appling 프로젝트 2024. 9. 1. 22:18
🔴 jacoco테스트코드의 커버리지를 강제할 수 있는 jacoco 설정을 진행하려고 한다.🟠 설정plugins { ... id("jacoco")}dependencies { ...// developmentOnly("org.springframework.boot:spring-boot-docker-compose") runtimeOnly("com.h2database:h2")}tasks.withType { useJUnitPlatform() finalizedBy(tasks.jacocoTestReport)}jacoco { toolVersion = "0.8.12" // JaCoCo의 버전을 명시합니다.}tasks.jacocoTestReport { dependsOn(ta..