1. WebFlux 의존성 추가WebClient 같은 비동기 HTTP 클라이언트를 사용하기 위해 다음 의존성을 추가해줬다. org.springframework.boot spring-boot-starter-webflux 2. WebClient 빈 추가WebConfig 파일에 WebClient.Builder builder를 통해 스프링이 미리 준비해둔 빌더로 기본 설정 상태의 WebClient를 Bean으로 등록해둔다.@Beanpublic WebClient webClient(WebClient.Builder builder) { return builder.build();} 3.외부API 받아오기WebClient를 사용하여 GET 방식으로 외부 url에 요청을 보내고 retriev..
분류 전체보기
1.의존성추가OAuth 2.0 및 OpenID Connect 기반의 로그인 기능을 쉽게 구현할수 있게해주는 의존성을 추가해준다. org.springframework.boot spring-boot-starter-oauth2-client 2. 구글 OAuth등록하기2-1.프로젝트 생성우선 아래 링크로 들어가서 새프로젝트를 생성하자https://console.cloud.google.com/ 2-2. OAuth 클라이언트 ID만들기 API 및 서비스 -> 사용자 인증정보로 들어간다. 사용자 인증 정보 만들기 -> OAuth 클라이언트 ID를 선택한다. 우선 동의화면을 구성하라고 하니 들어가서 하라는것들을 완료한다. 이제 OAuth 클라이언트 만들기를 선택한다. 어플리케이션 유형..
1.WebSocket 의존성 추가Spring Boot 프로젝트에서 WebSocket 기능을 사용하기 위해 필요한 의존성을 추가해준다. org.springframework.boot spring-boot-starter-websocket 2.WebSocketConfigWebSocket 메시지 브로커를 활성화한다.STOMP를 기반으로 한 메시징 기능을 활성화하여 클라이언트-서버 간 실시간 통신을 가능하게한다.@Configuration@EnableWebSocketMessageBroker // 웹소켓 메시지 브로커 활성화public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { 2-1.configureMessageBro..
1.Spring Boot Actuator애플리케이션의 운영 및 모니터링을 위한 기능을 제공하는 라이브러리다.엔드포인트를 통해 확인이 가능하다. 1-1.의존성추가Actuator 사용을 위해 pom.xml에 의존성을 추가해줬다. org.springframework.boot spring-boot-starter-actuator 1-2. 엔드포인트 접근 권한설정actuator엔드포인트를 테스트할 목적이므로 우선 인증권한 없이 접근 가능하게 SecurityConfig에서 설정한다.@BeanSecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .cors(cors -> cors.co..
1.log aspect서비스와 컨트롤러의 모든 메서드가 실행될 때마다 로그를 남기는 Aspcet를 추가했다. 따로 큰 목적은 없고 디버깅때 사용하기위해 만들어봤다.@Aspect@Component@Slf4jpublic class LoggingAspect { // 서비스나 컨트롤러의 메소드가 실행될 때마다 로그를 남기기 위한 어드바이스 @Around("execution(* com.shopping.service..*(..)) || execution(* com.shopping.controller..*(..))") public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable { Object result =..
0.추가 이유Redis 연결 오류에 대한 예외처리가 @ControllerAdvice를 사용한 GlobalExceptionHandler에서 안잡히고 로그를 저렇게 더럽혀서 Spring MVC 컨트롤러에서 발생한 예외가 아닌 redis 예외를 처리할 클래스를 생성하기로 했음 여기서 Filter 계층에서 redis 예외가 발생하는거같은데 이건 @ControllerAdvice 또는 @ExceptionHandler로 처리할수없다.[클라이언트 요청] → [Filter] → [Spring Security 필터] → [DispatcherServlet (Spring MVC)] 이건 @ControllerAdvice 또는 @ExceptionHandler에서 처리가능한 영역[DispatcherServlet] → [Contr..
0.스케쥴링스케줄링(Scheduling)은 특정 작업(Task)을 일정한 시간 간격(Time Interval)이나 특정 시간(Time)에 자동으로 실행되는 시스템이다. 이번에는 자주 db에 접근해야하여 변화시키는 조회수를 redis와 스케쥴링을 통해 DB Update를 줄이는것이 목적이다. 1. 조회수 업데이트 스케쥴러fixedRate 주기마다 redis에 저장해둔 product:views의 값을 DB의 각 상품의 조회수에 더해주는 스케쥴러다.@Component@RequiredArgsConstructor@Slf4jpublic class ProductViewScheduler { private final String REDIS_KEY = "product:views"; private final ..