- JAVA 17
- SpringBoot 3.2.1
- Build Tool Gradle 0 groovy
- Spring Web, H2(λ‘컬μ©), JPA, Lombok, MySql
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
masterλ μΈμ λ μ§ λ°°ν¬κ° κ°λ₯ν μν(릴리μ¦)- μλ‘μ΄ νλ‘μ νΈλ
developμ κΈ°λ°μΌλ‘ λ³λfeatureλΈλμΉλ₯Ό μμ±νμ¬ μμ μ μ§νν¨ - λΈλμΉλ λ‘컬μ commitνκ³ , μ κΈ°μ μΌλ‘ μ격 λΈλμΉμ pushν¨
- νΌλλ°±μ΄λ λμμ΄ νμνκ±°λ,μ½λ λ³ν© ν μ€λΉκ° λμλ€λ©΄ pull requestλ₯Ό λ§λ¬
- λ€λ₯Έμ¬λμ΄ λ³κ²½λ μ½λλ₯Ό κ²ν ν λ€ μΉμΈνλ©΄
masterμ λ³ν©ν¨ - λ³ν©λ
masterλ μ¦μ λ°°ν¬ν μ μμΌλ©°, λ°°ν¬ ν΄μΌλ§ ν¨
μΆμ² : https://puleugo.tistory.com/165
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 // goodint[] num = {1,2,3,4,5,6,7,8,9}; //bad
int[] num = {1, 2, 3, 4, 5, 6, 7, 8, 9}; //good1οΈβ£ ν΄λμ€λͺ λ€μλ ν μΉΈ λμ΄μ°κΈ°, μμ 첫 μ€ λμ΄μ°κΈ° μλλ ν μ€ λμ΄μ°κΈ°
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());
...
}






