HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
[New] 아만드팀
[New] 아만드팀
/
💻
[코딩] 리팩토링
💻

[코딩] 리팩토링

Due
Apr 19, 2022
Person
Related to Project (Property)
상태
완료
done
done
hide
Validation 코드 작성
하드코딩된것 상수로 변경하기 (코드리뷰 사항)
중복코드가 발생하고 코드가 길어짐 해결하기
Repository 인터페이스 변경으로 인해 기존 Repository 코드들 깨짐
의존관계가 지저분해짐 수정하기
BeforeAll과 AfterAll 작동 안함?? 문제
  • 아 내가 하려던건 AfterEach임
커밋 정리하기
도메인 Builder 만들어보고 싶음
AOP 적용해보기
Exception 관리
https://www.notion.so/backend-devcourse/Part1-3-38f57acca0dd490db11393701417943a
 
 
 
Q
UUID 별로인데 Long으로 바꾸면 안되나? UUID를 해야하는 이유가 꼭 있을까?
     
    테스트에서 yaml 속성 가져오기
    Spring Boot 프로젝트에서 application.yml과 secret.yml, 2개의 프로퍼티를 적용하려면 아래와 같이 SpringApplicationBuilder를 이용해 해결할 수 있었습니다.
    하지만 테스트 코드에서는 프로퍼티를 어떻게 가져와야 할 지 고민하던 중 @SpringBootTest에 properties속성이 있는것을 발견했고 위의 사용법과 동일하게 사용할 수 있습니다. @DataJpaTest, @WebMvcTest에도 properties 속성이 존재하는 걸로 보아 슬라이싱 테스트들에도 동일하게 적용할 수 있을 것으로 보입니다.
     
     
     
     
     

    GET /api/v1/vouchers

    바우처 전체 조회
     
     

    POST /api/v1/voucher

    바우처 추가
     

    GET /api/v1/voucher/{id}

    바우처 상세 조회
     

    POST /api/v1/voucher/query

    바우처 조건별 조회
     

    DELETE /api/v1/voucher/{id}

    바우처 삭제
     
    ## SpringBoot Basic Weekly Mission ###📝 요구사항(Week 2) **🔹(기본)바우처 관리 애플리케이션** - [-][1]**단위테스트 작성** - [v][2]**UserRepository 구현 (with JdbcTemplate)** - [v][3]**VoucherRepository 구현 (DB) 관리** **🔸(심화)바우처 지갑 만들기** - [v][4]**고객 바우처 할당 기능** - [v][5]**고객 바우처 조회 기능** - [v][6]**고객 바우처 제거 기능** - [v][7]**특정 바우처를 보유한 고객 조회 기능**
    @SpringBootApplication public class Application { private static final String PROPERTIES = "spring.config.location=" +"classpath:/application.yml" +",classpath:/secret.yml"; public static void main(String[] args) { new SpringApplicationBuilder(RecruitJogboWeb.class) .properties(PROPERTIES) .run(args); } }
    @SpringBootTest(properties = "spring.config.location=" + "classpath:/application.yml" + ",classpath:/secret.yml" )
    GET http://localhost:8080/api/v1/vouchers Accept: application/xml
    <list> <com.example.voucherproject.voucher.model.Voucher> <id>fc001d5f-e17b-4a2a-a08e-fde0ee5b922d</id> <type>FIXED</type> <amount>1000</amount> <createdAt>2022-04-24T19:48:11.311</createdAt> </com.example.voucherproject.voucher.model.Voucher> <com.example.voucherproject.voucher.model.Voucher> <id>773e8c02-ec0c-4a2f-886d-799bf8c1a85a</id> <type>FIXED</type> <amount>42</amount> <createdAt>2022-04-28T20:23:52.229</createdAt> </com.example.voucherproject.voucher.model.Voucher> </list>
    GET http://localhost:8080/api/v1/vouchers Accept: application/json
    [ { "id": "fc001d5f-e17b-4a2a-a08e-fde0ee5b922d", "type": "FIXED", "amount": 1000, "createdAt": "2022-04-24T19:48:11.311", "updatedAt": null }, { "id": "773e8c02-ec0c-4a2f-886d-799bf8c1a85a", "type": "FIXED", "amount": 42, "createdAt": "2022-04-28T20:23:52.229", "updatedAt": null } ]
    POST http://localhost:8080/api/v1/voucher Accept: application/json Content-Type: application/json { "type": "PERCENT", "amount": 5 }
    { "id": "22fe64d4-3ec9-48ea-b76a-87789bc08a84", "type": "PERCENT", "amount": 5, "createdAt": "2022-04-29T08:50:14.266", "updatedAt": "2022-04-29T08:50:14.266" }
    POST http://localhost:8080/api/v1/voucher Accept: application/xml Content-Type: application/json { "type": "PERCENT", "amount": 7 }
    <com.example.voucherproject.voucher.model.Voucher> <id>302a6066-e1dc-46f2-a558-4c81175825ca</id> <type>PERCENT</type> <amount>7</amount> <createdAt>2022-04-29T08:50:55.456</createdAt> <updatedAt>2022-04-29T08:50:55.456</updatedAt> </com.example.voucherproject.voucher.model.Voucher>
    GET http://localhost:8080/api/v1/voucher/302a6066-e1dc-46f2-a558-4c81175825ca Accept: application/json
    { "id": "302a6066-e1dc-46f2-a558-4c81175825ca", "type": "PERCENT", "amount": 7, "createdAt": "2022-04-29T08:50:55.456", "updatedAt": null }
    POST http://localhost:8080/api/v1/voucher/query Accept: application/json Content-Type: application/json { "type": "FIXED", "from": "2022-04-11" }
    [ { "id": "30554b40-3276-403f-8c04-b897cc3b8319", "type": "FIXED", "amount": 1222, "createdAt": "2022-04-28T15:46:27.485", "updatedAt": null }, { "id": "4272f4d2-2002-4017-8909-94e611eb0053", "type": "FIXED", "amount": 50, "createdAt": "2022-04-28T17:31:08.017", "updatedAt": null }, { "id": "4841a132-d73b-4086-b863-28d5f58be330", "type": "FIXED", "amount": 1209, "createdAt": "2022-04-28T17:52:55.163", "updatedAt": null }, { "id": "6f673a61-c438-4c2d-a71d-3b9faceedf08", "type": "FIXED", "amount": 222, "createdAt": "2022-04-28T13:52:30.581", "updatedAt": null }, { "id": "773e8c02-ec0c-4a2f-886d-799bf8c1a85a", "type": "FIXED", "amount": 42, "createdAt": "2022-04-28T20:23:52.229", "updatedAt": null }, { "id": "fc001d5f-e17b-4a2a-a08e-fde0ee5b922d", "type": "FIXED", "amount": 1000, "createdAt": "2022-04-24T19:48:11.311", "updatedAt": null }
    DELETE http://localhost:8080/api/v1/voucher/ee0b4ffa-433e-4ab9-ac72-08c6811d0cea
    HTTP/1.1 200 Content-Length: 0 Date: Fri, 29 Apr 2022 00:19:27 GMT Keep-Alive: timeout=60 Connection: keep-alive <Response body is empty>