스프링 쇼핑몰 장바구니 기능 테스트코드(Junit5 단위 테스트)
·
Java/Spring
CartControllerTest package com.example.shoppingmall.controller; import com.example.shoppingmall.controller.cart.CartController; import com.example.shoppingmall.dto.cart.CartCreateRequestDto; import com.example.shoppingmall.entity.member.Member; import com.example.shoppingmall.repository.member.MemberRepository; import com.example.shoppingmall.service.cart.CartService; import com.fasterxml.jackso..
스프링 쇼핑몰 프로젝트 장바구니(cart) 기능 구현
·
Java/Spring
오늘은 멘토 분과 함께 장바구니 기능을 구현해봤습니다. 우선적으로 생각해야 할 부분이 있습니다. Cart(장바구니)는 CartItem(장바구니에 있는 아이템 목록)을 따로 만들어줘야 합니다. 그 이유가 뭐냐면 DB의 속성과도 연관이 있습니다. DB는 각 테이블을 쪼개면 쪼갤수록 안전하기 때문입니다. 이렇게 구현하지 않으면 서비스 코드 엄청 길어지고 쿼리 조회도 비효율적입니다. 그래서 cart, cartItem을 따로 만들어주었습니다. Cart, CartItem Entity package com.example.shoppingmall.entity.cart; import com.example.shoppingmall.entity.common.EntityDate; import com.example.shopping..
Gradle 환경에서 Swagger 사용 방법(API 문서 자동화)
·
Java/Spring
Swagger란? 백엔드 개발에 있어 Rest API를 설계, 빌드, 문서화하는데 도움이 되는 오픈 소스 소프트웨어 프레임워크이다. Swagger를 사용하는 경우 다른 개발팀과 협업 진행 시 백엔드의 API를 호출하는 프론트엔드 프로그램 제작 시 Swagger 적용 순서 1. bundle.gradle에 의존성 추가 2.application.yml에 다음과 같은 코드 추가 3.코드 작성(config패키지 생성 + SwaggerConfig 클래스 생성) package com.example.board.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuratio..
스프링 프로젝트 코드 리뷰
·
Java/Spring
Review review = Review.builder() .comment(reviewRequestDto.getComment()) .rate(reviewRequestDto.getRate()) .product(product) .user(writer) .build(); return reviewRepository.save(review); 1.빌더(Builder)로 구현해보고자 한 건 좋지만, 생성자의 장점을 놓친 것 같다. 둘의 차이를 알고 어떨 때에는 빌더를 쓰고, 어떨 때에는 생성자를 쓰는지 차이점을 알면 더 좋을 것 같다. 빌더와 생성자에 대해서 각 상황에 맞게 적용하는 방안을 생각해봐야 겠다. @JoinColumn(name = "User_id") @ManyToOne(fetch = FetchType.LA..
스프링부트 프로젝트 최종 결과물
·
Java/Spring
Review package com.studyProjectA.ShoppingMall.entity; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import net.minidev.json.annotate.JsonIgnore; import org.hibernate.annotations.OnDelete; import org.hibernate.annotations.OnDeleteAction; import org.springframework.data.annotation.CreatedDate; import org.springframework.format.annotat..
스프링 프로젝트 리팩토링 전 코드(review)
·
Java/Spring
많은 리팩토링과 다양한 기능을 추가해 포스트맨으로 시험해 봤습니다. 우선적으로 이번 프로젝트를 통해서 게시판 기능을 이용한 CRUD에 대해 다잡을 수 있었고, 시큐리티, jwt token에 대해서도 조금 생각해볼 수 있는 계기가 되었습니다. 팀마다 기능을 나누어 구현했기에, 팀과의 협력과 공유하는 것이 얼마나 중요한지에 대해 깨닫게 되었습니다. 리팩토링 전 코드 Entity Entity @Data @AllArgsConstructor @NoArgsConstructor @Entity public class Review { // 아이디 @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; // 상품 매핑 @JoinColumn(name..
Junit5을 이용한 테스트코드 작성(단위 테스트 코드)
·
Java/Spring
프로젝트나 사람들과 협업을 하게되면 테스트 코드는 필수적이다. 테스트코드를 작성하는 이유는 다음과 같다. 개발단계 초기에 문제를 발견하게 도와준다. 개발자가 나중에 코드를 리팩토링 할 때 기존 기능의 올바르게 수행되는지 확인할 수 있다. 기능에 대한 불확실성을 감소시킨다. 시스템에 대한 실제 문서를 제공해준다. @SpringBootApplication public class BoardApplication { public static void main(String[] args) { SpringApplication.run(BoardApplication.class, args); } } 스프링부트 웹을 실행할 수 있는 이유 @SpringBootApplicaiton은 스프링부트의 자동 설정, 스프링 Bean 읽기..
ArrayList<E> 클래스 및 제네릭 함수 개념
·
Java/Java Concept
ArrayList는 컬렉션 클래스 중 가장 많이 사용하는 함수이다. 컬렉션 프레임워크 ? 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미한다. 데이터르 저장하는 자료구조와 데이터를 처리하는 알고리즘을 구조화해 클래스로 구현해 놓은 것이다. List 클래스의 특징 중복 저장을 허용한다. 저장 순서가 유지된다. ArrayList 클래스는 배열을 이용하기 때문에 인덱스를 활용해 요소 접근이 편리하다. ArrayList arrList = new ArrayList; arrList.add(40); arrList.add(20); arrList.add(30); arrList.add(10); // for 문과 get() 메소드를 이용한 요소의 출력 for (int i = 0..
메소드 오버라이딩(Method Overriding) 개념
·
Java/Java Concept
메소드 오버로딩이랑 메소드 오버라이딩을 구분할 필요가 있다. 메소드 오버로딩 vs 메소드 오버라이딩 메소드 오버로딩이란 서로 다른 시그니처(매개변수 목록)를 갖는 여러 메소드를 하나의 이름으로 정의하는 것이다. 메소드 오버라이딩이란 상속 관계에 있는 부모 클래스에서 이미 정의된 메소드를 자식 클래스에서 같은 시그니처를 갖는 메소드로 다시 재정의 하는 것을 의미한다. 자바에서 자식 클래스는 부모 클래스의 private 멤버를 제외하고 모든 메소드를 상속받는다. 이를 그대로 사용해도 되지만, 재정의해서 사용할 수도 있다. 상속받은 부모 클래스의 메소드를 재정의하기 위해 사용하는 것을 메소드 오버라이딩이라고 한다. 메소드 오버라이딩의 조건 자식 클래스 메소드의 선언부 = 부모 클래스 메소드의 선언부 메소드의 ..
상속(inheritance)
·
Java/Java Concept
상속이란 기존 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것이다. 객체 지향 프로그래밍을 구성하는 특징 중 하나이다. 상속을 이용하면 기존 클래스의 모든 필드와 메소드를 물려 받아 새로운 클래스를 정의할 수 있다. 기존 클래스 : 부모클래스(parent class), 상위클래스(super class), 기초 클래스(base class) 새로운 클래스 : 자식클래스(child class), 하위클래스(sub class), 파생클래스(derived class) 상속의 장점 기존 클래스 재활용 계층적 관계 구성(상하관계 구분) 자식 클래스 사용법 (새롭게 만든 클래스) class 자식클래스이름 extends 부모클래스이름 즉 자식클래스 안에 부모클래스가 들어가있음을 확인할 수 있다. ※중요..