application.properties에 이거 설정 넣으면됨springdoc.swagger-ui.persistAuthorization=true
분류 전체보기
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 ..
0.기존방식기존에는 이미지 업로드 기능이 없이 다음처럼 ProductCreateRequestDTO 내부에 url을 받아서 넣는 방식으로 있었기에 이번에 이미지를 업로드해서 하도록 만들었다.@Operation(summary = "판매자 상품 추가", description = "판매자가 새로운 상품을 추가합니다.")@PostMapping("/{memberId}/product/create")@PreAuthorize("hasRole('ROLE_ADMIN') or #memberId == authentication.principal.id")public ResponseEntity createProduct(@Valid @PathVariable Long memberId, @Valid @RequestBody ..
1.RedisConfig Redis를 설정하여 Redis 서버와 연결하고 값은 JSON 형식으로 직렬화하여 Redis에 저장할 수 있도록 설정한 파일을 생성했다.@Configuration@EnableCachingpublic class RedisConfig { @Bean public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate template = new RedisTemplate(); template.setConnectionFactory(connectionFactory); template.setKeySerializer(new StringRedisSeri..
1.어노테이션 만들기컨트롤러에서 요청 제한 로직을 직접 작성하는것은 코드가 너무 중복되고 비효율적이라 생각하기때문에 어노테이션으로 만들어서 사용하기로 하였다. 다음은 메서드에 적용하여 런타임동안 유지되고 파라미터로 value와 timeWindow를 받게 하였다.@Target(ElementType.METHOD) // 메서드에만 적용@Retention(RetentionPolicy.RUNTIME) // 런타임까지 유지public @interface RateLimit { long value() default 5; // 초당 허용 요청 수 long timeWindow() default 1; // 제한 시간 (초)} 다음과같은 형태로 어노테이션을 사용할수있다.@Rat..
1.Spring Cache반복적인 연산 결과를 메모리또는 외부 저장소(Redis 등)에 저장하여 성능을 최적화하는 기능이다.이번에는 Redis를 프로젝트에 추가했기때문에 Redis를 사용해서 spring Cache를 사용할것이다. 2.의존성 추가redis 의존성과 spring Cache의존성을 추가한다. org.springframework.boot spring-boot-starter-data-redis org.springframework.boot spring-boot-starter-cache 3.CacheConfig 파일생성@EnableCaching을 통해 Spring Cache를 활성화하고 RedisCacheManager로 Redis를 캐시 저장소로 지정한다.@Conf..
1.Redis(Remote Dictionary Server)키-값(key-value) 구조를 사용하는 NoSQL 데이터베이스 2. Redis 실행하기 (Docker)Docker를 실행하고 다음 명령어를 실행하여 redis 를 실행한다.docker run --name redis -d -p 6379:6379 redis 3.SpringBoot 프로젝트에 Redis 의존성추가Spring Data Redis를 기반으로 하며, Redis 연결, 데이터 저장, 캐싱 등을 편리하게 처리할 수 있도록 도와주는 의존성을 추가한다. org.springframework.boot spring-boot-starter-data-redis 4.Redis 설정 application.propertiessp..