Skip to content

Latest commit

Β 

History

344 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

μ„œλΉ„μŠ€ μ†Œκ°œ

image

1. Stack Info

  • JAVA 17
  • SpringBoot 3.2.1
  • Build Tool Gradle 0 groovy

Dependencies

  • Spring Web, H2(둜컬용), JPA, Lombok, MySql

2. ν”„λ‘œμ νŠΈ ꡬ쑰

niornear
β”œβ”€β”€ ServerApplication.java
β”œβ”€β”€ domain
β”‚Β Β  β”œβ”€β”€ letter
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ api
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── LetterController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ application
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ LetterService.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── LetterServiceImpl.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ dto
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ request
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  └── ThankLetterRequestDto.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── response
β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ LetterResponseDto.java
β”‚Β Β  β”‚Β Β  β”‚Β Β      └── ThankLetterResponseDto.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ entity
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Letter.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── LetterStatus.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ exception
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── handler
β”‚Β Β  β”‚Β Β  β”‚Β Β      └── LetterExceptionHandler.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ repository
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── LetterRepository.java
β”‚Β Β  β”‚Β Β  └── utils
β”‚Β Β  β”‚Β Β      └── init.md
β”‚Β Β  β”œβ”€β”€ order
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ api
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── OrderController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ application
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ MyOrderMenuResponseDto.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ OrderCommandService.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ OrderCommandServiceImpl.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ OrderQueryService.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── OrderQueryServiceImpl.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ dto
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ request
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  └── OrderAddRequestDto.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── response
β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ OrderAddResponseDto.java
β”‚Β Β  β”‚Β Β  β”‚Β Β      └── OrderGetResponseDto.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ entity
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Order.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ OrderMenu.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ OrderStatus.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── Place.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ exception
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── handler
β”‚Β Β  β”‚Β Β  β”‚Β Β      └── OrderHandler.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ repository
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ OrderMenuRepository.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── OrderRepository.java
β”‚Β Β  β”‚Β Β  └── utils
β”‚Β Β  β”‚Β Β      └── init.md
β”‚Β Β  β”œβ”€β”€ payment
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ api
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ PaymentController.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── RenderingController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ application
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ PaymentService.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── PaymentServiceImpl.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ dto
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ request
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ PayStatusRequestDto.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ PaymentCallbackRequest.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  └── RequestPayDto.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── response
β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ PayStatusResponseDto.java
β”‚Β Β  β”‚Β Β  β”‚Β Β      └── PaymentResponseDto.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ entity
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Payment.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── PaymentStatus.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ exception
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── handler
β”‚Β Β  β”‚Β Β  β”‚Β Β      └── PaymentHandler.java
β”‚Β Β  β”‚Β Β  └── repository
β”‚Β Β  β”‚Β Β      └── PaymentRepository.java
β”‚Β Β  β”œβ”€β”€ store
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ api
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ HomeController.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ RegionController.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── StoreController.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ application
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ HomeService.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ HomeServiceImpl.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ RegionService.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ RegionServiceImpl.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ StoreCommandService.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ StoreCommandServiceImpl.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ StoreQueryService.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── StoreQueryServiceImpl.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ dto
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ request
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ CompanyChefRegistrationRequestDto.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ FreelanceChefRegistrationRequestDto.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ MenuAddRequestDto.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  └── UpdateRegionRequestDto.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── response
β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ ChefRegistrationInfoResponseDto.java
β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ ChefRegistrationResponseDto.java
β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ HomeResponseDto.java
β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ MenuAddResponseDto.java
β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ PlaceRegionGetResponse.java
β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ RegionsGetResponseDto.java
β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ StoreResponseDto.java
β”‚Β Β  β”‚Β Β  β”‚Β Β      └── StoreSearchResponseDto.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ entity
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Auth.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Menu.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Region.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Store.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ StoreAuth.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── StoreImage.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ exception
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── handler
β”‚Β Β  β”‚Β Β  β”‚Β Β      └── StoreHandler.java
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ repository
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ AuthRepository.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ MenuRepository.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ PlaceRepository.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ RegionRepository.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ StoreAuthRepository.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ StoreImageRepository.java
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── StoreRepository.java
β”‚Β Β  β”‚Β Β  └── utils
β”‚Β Β  β”‚Β Β      └── init.md
β”‚Β Β  └── user
β”‚Β Β      β”œβ”€β”€ api
β”‚Β Β      β”‚Β Β  └── MemberController.java
β”‚Β Β      β”œβ”€β”€ application
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ MemberService.java
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ MemberServiceImpl.java
β”‚Β Β      β”‚Β Β  └── OAuth2MemberServiceImpl.java
β”‚Β Β      β”œβ”€β”€ dto
β”‚Β Β      β”‚Β Β  └── response
β”‚Β Β      β”‚Β Β      β”œβ”€β”€ MyMemberResponseDto.java
β”‚Β Β      β”‚Β Β      └── MyPaymentSummaryResponseDto.java
β”‚Β Β      β”œβ”€β”€ entity
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ Account.java
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ CustomOAuth2Member.java
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ LikeStore.java
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ LoginHistory.java
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ Member.java
β”‚Β Β      β”‚Β Β  └── UserAuthorization.java
β”‚Β Β      β”œβ”€β”€ exception
β”‚Β Β      β”‚Β Β  └── handler
β”‚Β Β      β”‚Β Β      └── MemberExceptionHandler.java
β”‚Β Β      └── repository
β”‚Β Β          β”œβ”€β”€ LoginHistoryRepository.java
β”‚Β Β          └── MemberRepository.java
└── global
    β”œβ”€β”€ auth
    β”‚Β Β  β”œβ”€β”€ WebSecurityConfiguration.java
    β”‚Β Β  β”œβ”€β”€ dto
    β”‚Β Β  β”‚Β Β  └── NaverAccessTokenInfoResponseDto.java
    β”‚Β Β  β”œβ”€β”€ handler
    β”‚Β Β  β”‚Β Β  └── OAuth2SuccessHandler.java
    β”‚Β Β  β”œβ”€β”€ init.md
    β”‚Β Β  └── jwt
    β”‚Β Β      β”œβ”€β”€ JwtAuthenticationFilter.java
    β”‚Β Β      β”œβ”€β”€ JwtProvider.java
    β”‚Β Β      └── TokenParser.java
    β”œβ”€β”€ common
    β”‚Β Β  β”œβ”€β”€ AwsS3.java
    β”‚Β Β  β”œβ”€β”€ BaseResponseDto.java
    β”‚Β Β  └── ResponseCode.java
    β”œβ”€β”€ config
    β”‚Β Β  β”œβ”€β”€ AsyncConfig.java
    β”‚Β Β  β”œβ”€β”€ AwsS3Config.java
    β”‚Β Β  β”œβ”€β”€ IamportConfig.java
    β”‚Β Β  └── WebConfig.java
    β”œβ”€β”€ error
    β”‚Β Β  β”œβ”€β”€ GeneralException.java
    β”‚Β Β  └── handler
    β”‚Β Β      β”œβ”€β”€ AwsS3Handler.java
    β”‚Β Β      └── MasterExceptionHandler.java
    β”œβ”€β”€ infra
    β”‚Β Β  β”œβ”€β”€ HealthCheckController.java
    β”‚Β Β  └── ProfileCheckController.java
    └── util
        β”œβ”€β”€ AwsS3Service.java
        β”œβ”€β”€ FileService.java
        β”œβ”€β”€ SmsService.java
        └── Time.java

3. 인프라 μ•„ν‚€ν…μ²˜

image

4. 배포 κ³Όμ •

[운영 μ„œλ²„] image

[개발 μ„œλ²„] image

5. 브랜치 μ „λž΅

image

  • masterλŠ” μ–Έμ œλ“ μ§€ 배포가 κ°€λŠ₯ν•œ μƒνƒœ(릴리즈)
  • μƒˆλ‘œμš΄ ν”„λ‘œμ νŠΈλŠ” develop을 기반으둜 별도 feature 브랜치λ₯Ό μƒμ„±ν•˜μ—¬ μž‘μ—…μ„ 진행함
  • λΈŒλžœμΉ˜λŠ” λ‘œμ»¬μ— commitν•˜κ³ , μ •κΈ°μ μœΌλ‘œ 원격 λΈŒλžœμΉ˜μ— push함
  • ν”Όλ“œλ°±μ΄λ‚˜ 도움이 ν•„μš”ν•˜κ±°λ‚˜,μ½”λ“œ 병합 ν•  μ€€λΉ„κ°€ λ˜μ—ˆλ‹€λ©΄ pull requestλ₯Ό λ§Œλ“¬
  • λ‹€λ₯Έμ‚¬λžŒμ΄ λ³€κ²½λœ μ½”λ“œλ₯Ό κ²€ν†  ν•œ λ’€ μŠΉμΈν•˜λ©΄ master에 병합함
  • λ³‘ν•©λœ masterλŠ” μ¦‰μ‹œ 배포할 수 있으며, 배포 ν•΄μ•Όλ§Œ 함

6. 컀밋 μ»¨λ²€μ…˜

image image

좜처 : https://puleugo.tistory.com/165

μ˜ˆμ‹œ(κΉƒλͺ¨μ§€ μ‚¬μš©)

image

7. μ½”λ“œ μ»¨λ²€μ…˜

🐫 ν•¨μˆ˜λͺ…, λ³€μˆ˜λͺ…은 μΉ΄λ©œμΌ€μ΄μŠ€λ‘œ μž‘μ„±ν•©λ‹ˆλ‹€.

forλ¬Έ / if문은 λ‹€μŒκ³Ό 같이 κΈ°μž…ν•©λ‹ˆλ‹€. (ν•œ μΉΈ 띄어쓰기)

List<HouseResponseDto> houseResponseDtoList = new ArrayList<>();
for (House house : findHouses) {
        List<Review> reviewList = reviewRepository.findAllByHouse(house);
        if (reviewList.size() == 0) {
            houseResponseDtoList.add(HouseResponseDto.of(house, 0, 0));
            continue;
        }           
Optional<CardLike> cardLike = cardLikeRepository.findByCardIdAndUserId(id, user.getId());
if(cardLike.isEmpty()) {
        cardLikeRepository.saveAndFlush(CardLike.of(card.get(), user));
        return ResponseEntity.ok().body(MessageResponseDto.of("μ’‹μ•„μš” μΆ”κ°€", HttpStatus.OK));
} else {
        cardLikeRepository.delete(cardLike.get());
        return ResponseEntity.ok().body(MessageResponseDto.of("μ’‹μ•„μš” μ·¨μ†Œ", HttpStatus.OK));
}

주석 μ˜ˆμ‹œ

// λŒ“κΈ€ μˆ˜μ •
@Transactional
public ResponseEntity updateComment(Long id, CommentRequestDto commentRequestDto, User user){

    // ν•΄λ‹Ή id의 λŒ“κΈ€μ΄ DB에 μžˆλŠ”μ§€ 확인
    Optional<Comment> comment = commentRepository.findById(id);
    if (comment.isEmpty()) {
        throw new IllegalArgumentException("ν•΄λ‹Ή λŒ“κΈ€μ΄ μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.");
    }
}

μ—°μ‚°μž μ‚¬μ΄μ—λŠ” 곡백을 μΆ”κ°€ν•˜μ—¬ 가독성 높이기

a+b+c+d // bad
a + b + c + d // good

콀마 λ‹€μŒμ— 값이 올 경우 곡백을 μΆ”κ°€ν•˜μ—¬ 가독성을 λ†’μž…λ‹ˆλ‹€.

int[] num = {1,2,3,4,5,6,7,8,9}; //bad
int[] num = {1, 2, 3, 4, 5, 6, 7, 8, 9}; //good

Refactoring 이후 μΆ”κ°€λœ λΆ€λΆ„

1️⃣ 클래슀λͺ… λ’€μ—λŠ” ν•œ μΉΈ 띄어쓰기, μœ„μ— 첫 쀄 띄어쓰기 μ•„λž˜λŠ” ν•œ 쀄 띄어쓰기

public class AdminController {
                                                                               
  private final AdminService adminService;

  @Operation(summary = "νšŒμ›κ°€μž… API", description = "νšŒμ›μ„ λ“±λ‘ν•©λ‹ˆλ‹€.")
  @ResponseStatus(value = HttpStatus.OK)
  @Secured(PositionEnum.Authority.ADMIN)
  @PostMapping("/signup")
  public SuccessResponse signup(@Valid @RequestBody SignupRequestDto signupRequestDto, @AuthenticationPrincipal UserDetailsImpl userDetails) {
      return adminService.signup(signupRequestDto, userDetails.getMember());
  }                                                                      
}

2️⃣ import ν•΄μ„œ μ“Έ λ•ŒλŠ” 쀄 띄어쓰기 (X)

private final PostRepository postRepository;
private final CategoryRepository categoryRepository;
private final KeywordRepository keywordRepository;
private final EmitterRepository emitterRepository;

3️⃣ λ³€μˆ˜ μ„ μ–Έ λ‹€μŒ λ©”μ†Œλ“œ 였면 μ€„λ°”κΏˆ ν•΄ μ£Όμ„Έμš”.

Optional<Post> findPost = postRepository.findById(id);
                                                                             
if (findPost.isEmpty()) {
        throw new IllegalArgumentException("ν•΄λ‹Ή κ²Œμ‹œκΈ€μ΄ μ—†μŠ΅λ‹ˆλ‹€.");
} else if (member.getPosition().getNum() < findPost.get().getModifyPermission().getNum()) {
        throw new IllegalArgumentException("μˆ˜μ • κ°€λŠ₯ν•œ νšŒμ› 등급이 μ•„λ‹™λ‹ˆλ‹€.");
}

4️⃣ else ifλŠ” μ•žμ—λ§Œ 띄어쓰기 ν•΄ μ£Όμ„Έμš”.

if(post.isEmpty()) {
    throw new IllegalArgumentException("ν•΄λ‹Ή κ²Œμ‹œκΈ€μ΄ μ—†μŠ΅λ‹ˆλ‹€.");
} else if(member.getPosition().getNum() < post.get().getReadablePosition().getNum()){
    throw new IllegalArgumentException("읽기 κ°€λŠ₯ν•œ νšŒμ› 등급이 μ•„λ‹™λ‹ˆλ‹€.");
}

5️⃣ β€œ}” μ‚¬μ΄μ˜ return문은 띄어쓰기λ₯Ό ν•΄ μ£Όμ„Έμš”.

	  }
                                                                         
    return key.toString();
}

6️⃣ λ©”μ„œλ“œ λͺ…κ³Ό λ‹€μŒ 쀄은 띄어쓰기 ν•΄ μ£Όμ„Έμš”.

@Transactional
public SuccessResponse createBookMarkFolder(String folderName, Member member){
                                                                                          
    Optional<Member> findMember = memberRepository.findById(member.getId());
		...
}

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages