개발/Spring Boot

    [SpringBoot] Propagation.REQUIRES_NEW에서 겪은 이슈

    Propagation.REQUIRES_NEW에서 겪은 이슈모든 코드는 Github에 저장되어 있습니다.이슈Propagation.REQUIRES_NEW 써도 따로 커밋이 안되는 현상1. 배경지식Propagation이란 사전적 의미로 전파, 번식등의 의미를 가지고 있다.Transaction Propagation (트랜잭션의 전파 속성)트랜잭션의 전파속성이란 이미 트랜잭션이 진행중일 때 추가 트랜잭션 진행을 어떻게 할지 결정하는 것이다.속성에 따라서 기존 트랜잭션에 참여할 수도 있고 새로운 트랜잭션을 만들수도 있다.물리 트랜잭션과 논리 트랜잭션다른 블로그 글들을 보면 물리 트랜잭션, 논리 트랜잭션 이라고 하는데 추상적으로는 이해가 되지만 콕 찝어서 설명하라고 하면 못할것 같아서 따로 찾아보고 정리하려고 한다...

    [Spring Boot] JsonDeserialize 활용해서 요청 Body 커스텀하기

    SpringBoot JsonSerialize 활용해서 요청 Body 커스텀하기모든 코드는 Github에 저장되어 있습니다.목차1. Spring boot에서 JSON 요청의 Body값을 처리하는 방법(1) RequestBody - Map@PostMapping("/mapRequest")public Map mapRequest(@RequestBody Map mapRequest) { String input1 = mapRequest.get("input1"); String input2 = mapRequest.get("input2"); return mapRequest;}Test Code@Testvoid testMapRequest() throws Exception { String requestBod..

    [Spring Boot] Spring Boot WebClient

    Spring Boot WebClient 모든 소스는 github에 있습니다. WebClient vs RestTemplate 스프링에서 http 요청을 위해 WebClient 와 RestTemplate이 있다. 인터넷에 RestTemplate이 Deprecated 된다는 말이 있지만 이는 사실이 아니다. It would be more helpful, and also accurate, to explain that the RestTemplate is in maintenance mode rather than mention a potential deprecation in the future. Deprecated 관련 이슈 java doc 을 확인해보면 유지모드로 들어간다고 한다. RestTemplate 동작 원리..

    [Spring Boot] Spring Security - OAuth2 (Google login)

    Spring Security - Oauth 2.0 모든 소스는 깃허브에 있습니다. https://github.com/TeTedo/blog-code/tree/main/spring-security-oauth Google login 1. 구글 클라우드 플랫폼 주소으로 이동해서 프로젝트 만들기 2. 완성된 프로젝트 생성 후 API 및 서비스 클릭 3. OAuth 클라이언트 ID 만들기 4. OAuth는 리다이렉션 URI를 설정하여 로그인 성공시 보여줄 화면을 지정할 수 있다. 5. application-oatuh.yml 파일 생성 spring: security: oauth2: client: registration: google: client-id: ${GOOGLE_CLIENT_ID} client-secret: ..

    [Spring Boot] Spring-REST-Docs로 자동으로 API 문서화

    Spring REST Docs 모든 코드는 Github에 있습니다. REST Docs란? 이름 그대로 REST 문서이다. REST API를 문서화하여 input, output, 파라미터 세부정보 등을 팀원과 공유할 수 있다. REST Docs는 테스트 코드를 통과하여야 문서로 작성되기 때문에 검증된 문서를 작성할 수 있다. REST Docs를 선택한 이유? Spring에서 문서화를 할때 Swagger와 Rest Docs를 많이 사용한다. 개인적으로 Swagger UI가 더 보기 좋다. 그리고 Swagger는 curl을 통해 API를 바로 테스트 해볼 수 있지만 REST Docs는 단순히 문서만 제공한다. 여기까지 보고 나는 Swagger로 해야겠다는 생각을 하고 어떻게 코드를 작성하나 찾아봤다. 근데 S..

    [Spring Boot] 오버로딩 언제 할 수 있을까

    오버로딩이란 메소드 이름은 같지만 다른 역할을 하는 메소드들을 만드는 것이다. 흔히들 오버라이딩과 오버로딩을 비교하곤 하지만 다른 개념이라 생각하여 따로 정리했다. 나는 개인적으로 오버로딩이란 개념을 좋아한다. 왜냐하면 같은 메소드 이름으로 여러 기능을 하는 메소드를 만들수 있기때문에 메소드 이름 작명의 수고를 덜어준다. 이름을 짓는 건 언제나 창작의 고통이기 때문에 오버로딩을 좋아하게 되었다. 그래서 오버로딩 어디까지 할 수 있는지 알아보기 위해 글을 쓴다. 1. 매개변수가 다를때 가장 보편적인 경우이다. 매개변수가 다를때 오버로딩이 가능하다. (1) 매개변수 갯수가 다를때 public void Method1() {} public void Method1(int a) {} (2) 매개변수 타입이 타를때 ..