Spring Boot 🍃
-
실습 내용과 함께 읽어보는 간략한 사용자 정의 Annotation 작성을 정리해보고 싶었는데Spring Boot 🍃 2023. 12. 2. 00:01
하루 지났다고 기억이 전혀 나질 않는다 한번 실습한거 안까먹고 영원히 기억하는 사람이었으면 얼마나 좋을까? ㅋㅋ 우선 파일 이름부터 나열! 그 전에 이 어노테이션을 정의 하게 된 이유와 사용 목적에 대해 알아보는게 좋을 것 같다. 그리고 다음엔 실습 후 바로 정리하기로 다짐..😠 이 어노테이션의 명칭은 AccountLock 이고 기능은 Account 계좌에 계좌 잔액 사용 / 사용 취소 요청 시 2중 3중 다중 접근 시도를 사전에 차단하는 Lock을 관리하는 기능이다. 왜 굳이 어노테이션을 만들어서 사용했을까? 일단, 어노테이션을 사용하면 코드의 가독성이 좋아진다. 메서드에 기능을 나열하지 않고 메서드 이름/ 클래스이름 근처에 어노테이션 호출만 해두면 되기 때문이다. 그리고 선언적 프로그래밍이 가능해진다..
-
lombok : @Builder , @SuperBuilderSpring Boot 🍃 2023. 12. 1. 00:01
강의 실습 중에 도메인 패키지의 엔티티 파일들에서 공통으로 사용되는 메타 필드를 하나의 파일로 분리해서 상속받아 사용하는 부분이 있었는데, 이 때 @Builder 어노테이션 사용 시 엔티티를 builder()로 호출해서 사용할 때 상속하는 엔티티의 필드를 사용할 수 없는 문제가 있었다. 검색해보니 @Builder는 해당 어노테이션이 붙은 클래스에 있는 필드만 사용할 수 있게 해주고, 해당 클래스의 부모 클래스의 필드는 무시된다고 한다. 부모 자식 클래스에 속한 모든 필드에 대해서 builder()를 적용하려면 @SuperBuilder 어노테이션 사용시 가능해진다고 한다. @Builder 각 필드에 대한 Setter 메서드를 포함하는 빌더 클래스를 생성하도록 Lombok에 알려주는 어노테이션이다. 이 어노..
-
Mockito : ArgumentCaptorSpring Boot 🍃 2023. 12. 1. 00:01
Mockito🍸의 mocking에 사용되는 클래스이다. 메서드 호출에 사용되는 인자에 대해서 검증하고 싶을 때, ArgumentCaptor 를 사용할 수 있다. 과제 프로젝트에 사용된 부분을 가져와서 본다면 // given ArgumentCaptor captor = ArgumentCaptor.forClass(Transaction.class); // when transactionService.saveFailedUseTransaction("1000000000", USE_AMOUNT); // then verify(transactionRepository, times(1)).save(captor.capture()); assertEquals(USE_AMOUNT, captor.getValue().getAmount()..
-
MockitoSpring Boot 🍃 2023. 12. 1. 00:01
컨셉이 정말 재밌는 프레임 워크다 😆 모킹?목킹?마킹? 맛있는 모킹 프레임워크! 사이트에 가보면 숙취 없는 맛이 정말 좋은 모킹 프레임워크라고 소개하고있다. 🙈🍸 근데 모킹이 뭐지; 모르는게 너무 많다 ㅋㅋ 🙈 모킹 Mocking 세상에 🙊 조롱이란 뜻이었다. 디비를 조롱하는건가.........??!?!? 놀라워서 앵무새한테 번역을 부탁해봤더니 흉내내는 이라는 뜻도 있었다. 여기서 사용된 모킹은 흉내내는 이라는 의미겠지! Mock Object 모의 객체 모의 객체 Mock Object란 주로 객체 지향 프로그래밍으로 개발한 프로그램을 테스트 할 경우 테스트를 수행 할 모듈과 연결되는 외부의 다른 서비스나 모듈들을 실제 사용하는 모듈을 사용하지 않고 실제의 모듈을 흉내내는 가짜 모듈을 작성하여 테스트의 효..
-
Spring Boot: 모듈 정보Spring Boot 🍃 2023. 11. 30. 00:01
Developer Tools Spring Boot DevTools 개발자의 생산성을 높여주는 모듈로, 코드 변경 시 자동으로 애플리케이션을 재시작하거나 리로드하는 기능을 제공한다. 또한 브라우저에서 캐시되지 않은 정적 자원을 제공하는 등의 기능도 포함하고 있다. 자세한 정보 : mgyo.tistory.com Lombok 자바 코드를 작성할 때 반복적으로 작성해야 하는 getter, setter, toString, equals, hashCode 등의 메소드를 자동으로 생성해주는 라이브러리. 코드의 가독성과 생산성을 높일 수 있다. 자세한 정보 : dololak.tistory.com Slf4j Lombok에서 지원하는 라이브러리! 로그를 사용하기 쉽게 해준다. Web Spring Web 스프링 부트 애플리케..
-
Spring Boot: Object MapperSpring Boot 🍃 2023. 11. 29. 06:22
ObjectMapper의 기능 Text 형태의 JSON String을 Object 형태로 바꿔준다. 이때, Object에는 Default 생성자가 정의되어 있어야 한다. Object를 Text 형태의 JSON String으로 바꿔준다. 이때, Object에는 기본형 getter() 메소드가 정의되어 있어야 한다. 만약, 사용자 정의 메서드 중에 이름이 get으로 시작하는 것이 있다면 오류 발생! Controller에서 사용시 Spring이 알아서 해주는 경우가 많지만, 이를 이용하지 않고 직접 ObjectMapper를 클래스로 호출해서 사용하는 방법도 있다. 이 방법에 대한 간단한 예제는 아래와 같다. Object를 Text로 var om = new ObjectMapper(); try { var user..
-
Spring Boot: JSON 클래스 만들때 알아두면 좋을 설정Spring Boot 🍃 2023. 11. 29. 06:22
1. 해당 클래스의 모든 변수에 대해 네이밍 방식 변경 @JsonNaming(value = PropertyNamingStrategies.네이밍규칙.class) @JsonNaming(value = 여기 ) 외우면 당연히 더 좋겠지만 , 여기 라고 적은 부분에 커서를 두고 Ctrl + Space 누르면 제공되는 클래스 확인이 가능하다. 이렇게 확인하면 SnakeCase로 변경하는 것만 확인이 되는데 (나만 그럴지도..!!!) 더 많은 규칙을 사용하려면 PropertyNamingStrategies. + Ctrl + Space 입력 해서 보면 된다. PropertyNamingStrategies 클래스에서 다양한 형태의 네이밍 변환 클래스를 제공한다. PropertyNamingStrategies에서 제공되는 다양..
-
Spring Boot: Response 응답에 대해 알아두면 좋을 2가지Spring Boot 🍃 2023. 11. 29. 06:21
1. JSON과 HTTP 응답코드 함께 내려주는 방법 import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping..
-
Spring Boot: POST , PUT, PATCH Method 요청 받기Spring Boot 🍃 2023. 11. 29. 06:21
POST , PUT , PATCH 요청은 HTTP 메세지의 Body 부분에 붙어서 날라오기 때문에, RequestBody 어노테이션을 사용하며, 이것들은 선언 메서드 이름만 다를뿐 사용 형식은 같다. + Request / Response 헷갈릴때 Request는 클라이언트에서 서버로 값을 보내달라고 요청하는 것이기 때문에 Request로써 존재하는 것. Response는 서버가 클라이언트의 요청에 대한 응답을 보내는 것이기 때문에 Response로써 존재한다. + JSON과 JAVA DTO 변수명 규칙이 다를 때 대응 방법 마지막 예제 참고! (사용 코드만 적어둠) class 위에 @JsonNaming 어노테이션을 사용하면 Object Mapper라는 모듈이 동작할 때 해당 클래스 변수명을 JsonNam..
-
Spring Boot: GET , DELETE Method 요청 받기Spring Boot 🍃 2023. 11. 29. 06:21
HTTP Method : GET , DELETE 클라이언트가 서버에서 값을 조회해올 때 사용되는 GET Metod 클라이언트가 서버에 값 삭제 요청을 할 때 사용되는 DELETE Metod Spring에서는 다양한 방법으로 Get Metod 요청을 받을 수 있다. DELETE도 같은 형식으로 사용! 1. 단순 문자열 출력 @RestController @RequestMapping("/api/get") public class GetApplication { @GetMapping("/hi") // localhost:8888/api/get/hi public String hi() { return "get hi"; } @GetMapping(path="/h2llo") // localhost:8888/api/get/h2..