본문 바로가기

전체 글252

스프링 핵심가이드) 북스터디 7주차 : 12장 서버 간 통신 12장 서버 간 통신 최근 개발 서비스들은 마이크로 서비스 아키텍처 (MSA)를 주로 채택하고 있음. MSA는 애플리케이션이 가지고있는 기능(서비스)이 하나의 비즈니스 범위만 가지는 형태. 각 애플리케이션은 자신이 가진 기능을 API로 외부에 노출하고, 다른 서버가 그러한 API를 호출해서 사용할 수 있게 구성되므로 각 서버가 다른 서버의 클라이언트가 되는 경우도 많음. 다른 서버로 웹 요청을 보내고 응답을 받을 수 있게 도와주는 RestTemplate과 WebClient에 대해 기술. 12.1 RestTemplate이란 ? - RestTemplate : 스프링에서 HTTP 통신 기능을 손쉽게 사용하도록 설계된 템플릿. HTTP 서버와의 통신을 단순화한 이 템플릿 이용시 RESTful 원칙을 따르는 서비.. 2023. 11. 5.
스프링 핵심가이드) 북스터디 7주차 : 11장 액추에이터 활용하기 11장 : 액추에이터 활용하기 애플리케이션 정상 동작 모니터링 환경 구축은 중요. 스프링 부트 액추 에이터 : HTTP 엔드 포인트나 JMX를 활용해 애플리케이션 모니터링하고 관리할 수 있는 기능 제공. * JMX(Java Management Extensions) : 실행 중인 애플리케이션의 상태를 모니터링하고 설정을 변경할 수 있게 해주는 API. JMX를 통해 리소스 관리하려면 MBeans(Managed Beans)를 생성해야 함. 11.1 액추에이터 종속성 추가 액추에이터 기능을 사용하려면 애플리케이션에 spring-boot-starter-actuator 모듈의 종속성 추가. 11.2 엔드포인트 액추에이터의 엔드포인트틑 애플리케이션의 모니터링을 사용하는 경로. 스프링 부트에는 여러 내장 엔드포인트가.. 2023. 11. 5.
스프링 핵심가이드) 북스터디 6주차 : 10장 유효성 검사와 예외처리 10 유효성 검사와 예외처리 유효성 검사 / 데이터 검증 : 비즈니스 로직이 올바르게 동작하기 위해 데이터를 사전 검증하는 작업 10.1 일반적인 애플리케이션 유효성 검사의 문제점 일반적으로 사용되는 데이터 검증 로직의 문제점 : 1. 계층별로 진행하는 유효성 검사는 검증 로직이 각 클래스 별로 분산되어 있어 관리가 어려움. 2. 검증로직에 중복이 많아 여러 곳에 유사한 기능의 코드가 존재할 수 있음. 3. 검증해야 할 값이 많으면 검증하는 코드가 길어져 가독성이 떨어짐. => Bean Validation이라는 데이터 유효성 검사 프레임워크로 위의 문제들을 해결. Bean Validation은 어노테이션을 통해 다양한 데이터를 검증하는 기능을 제공. - 유효성 검사를 위한 로직을 DTO같은 도메인 모델과.. 2023. 10. 29.
시간을 인자로 받을 때 [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: raw timestamp (2023) not allowed for `java.time.LocalDateTime`: n.. 클라이언트로부터 예약시간을 받을 ReserveDTO를 만들었다. package com.soni.reservation.dto; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.*; import org.springframework.data.annotation.CreatedDate; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import java.time.LocalDateTime; @Getter @Setter @Builder @AllArgsConstructor @NoArgsConstruc.. 2023. 10. 25.
UserDetailService 2개 구현 시 발생하는 에러 처리 관리자 회원가입을 위해 UserDetailSevice를 상속한 ManageService와 UserDetails를 상속한 Manager엔티티를 구현했다. 그리고 일반회원 회원가입을 위해 똑같이 MemberService와 Member를 구현했는데 엄청 긴 에러 중에 이런 것이 있었다. factory method 'authenticationmanagerbean' threw exception 왜 이럴까 아니면 그냥 따로 서비스 파일을 만들지 않고 한 번에 몰아서 해야하나 고민을 하다가 UserDetailService가 두 개 일 때 발생하는 에러에 대해서 찾아보았다. 그리고 해결책을 찾았다. ➡️원인 UserDetailService를 두 개 구현할 경우 securityConfig에도 각각의 서비스를 등록해줘야한.. 2023. 10. 25.
빈 순환참조 문제 The dependencies of some of the beans in the application context form a cycle: 회원가입, 로그인 인증 구현 후 프로젝트 실행시켰더니 오류가 발생했다. *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: jwtAuthenticationFilter defined in file [C:\spring_prac\Mission\reservation\out\production\classes\com\soni\reservation\security\JwtAuthenticationFilter.class] ┌─────┐ | tokenProvide.. 2023. 10. 21.
스프링 핵심가이드) 북스터디 5주차 : 09장 09 연관관계 매핑 9.1 연관관계 매핑 종류와 방향 - One to One - One to Many - Many to One - Many To Many 어떤 엔티티를 중심으로 연관 엔티티를 보느냐에 따라 연관관게의 상태가 달라짐. DB에서는 두 테이블의 연관관계를 설정하면 외래키를 통해 서로 조인해서 참조하는 구조로 생성, JPA를 사용하는 객체지향 모델링에서는 엔티티간 참조 방향 설정 가능. - 단방향/양방향으로 설정할 수 있다. 연관관계가 설정되면 한 테이블에서 다른 테이블의 기본키 값을 외래키로 갖는다. 외래키를 가진 테이블이 '주인'이 된다. 주인은 외래키를 사용(등록, 편집, 수정)할 수 있고 상대엔티티는 읽기만 가능. 9.3 일대일 매핑 9.3.1 일대일 단방향 매핑 하나의 상품에 하나의 상.. 2023. 10. 20.
DB에 따른 application.properties 속성 내가 보려고 정리 하이버네이트 : ORM 중의 하나로 JPA가 표준 인터페이스고 구현체가 Hibernate spring.jpa.hibernate.ddl-auto : Hibernate가 실행될 때 ddl 옵션 설정 ddl-auto 옵션 종류 create: 기존테이블 삭제 후 다시 생성 (DROP + CREATE) 꼭 ! 로컬환경에서만 사용 !!!! create-drop: create와 같으나 종료시점에 테이블 DROP update: 변경분만 반영(운영DB에서는 사용하면 안됨) validate: 엔티티와 테이블이 정상 매핑되었는지만 확인 none: 사용하지 않음(사실상 없는 값이지만 관례상 none이라고 한다.) *운영환경에서는 create, create-drop, update 사용금지*테스트 서버는 upd.. 2023. 10. 19.
Kafka 오류 - 미해결 consumer로 접속시 밀리초 단위로 마구 나오는 오류 bash-5.1# kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic loan_request 이렇게 접속하면 이것들이 마구 나옴 [2023-10-16 10:01:46,818] WARN [Consumer clientId=consumer-console-consumer-53651-1, groupId=console-consumer-53651] 1 partitions have leader brokers without a matching listener, including [loan_request-0] (org.apache.kafka.clients.NetworkClient) [2023-10.. 2023. 10. 17.
728x90