본문 바로가기

반응형

Spring

(19)
4) Spring Data JPA 4부 - QueryDSL Predicate 활용 앞에서 간단히 QueryDsl 사용법에 대해 알아 봤는데 . 요기서 조금더 실무에서 자주 쓰이는 방법에 공부해 보자. Predicate 를 직역하면 "서술어" 라고 하는데 즉 where 에 들어가는 조건문을 나타낸다고 생각하면 된다. Predicate 는 보통 where 문을 작성할때 Parameter의 Type 및 값 유무에 따라 조건을 다르게 하고 싶을 사용하게 된다. 아래 샘플 Predicate 를 참조. package com.devracoon.jpa.repository; import com.devracoon.jpa.entity.QItem; import com.devracoon.jpa.entity.QProduct; import com.querydsl.core.BooleanBuilder; import..
2) Spring Redis Cache적용하기 - 2부 Redis CacheEvict allEntries=true 문제해결 1부에 간단하게 Redis cache 를 이용하는 방법과 설정 방법에 대해 알아 보았다. 1부에서 보면 cacheable 된 데이터를 cacheEvict 하는 옵션중에 allEntries= true 라고 되어 있는데 실제 운영 Redis에서는 성능상의 문제로 allEntries=true 했을때 실행되는 Redis Command 가 사용하지 못하게 막혀있기 때문에 대부분의 운영서비스에서는 사용하지 못한다. 그러면 어떻게 해당 cache value에 대한것들을 다 지울수 있을까 하는 고민이 생기게 된다. 먼저 allEntries=true를 사용하지 못할때 어떤 문제가 생기는지 확인해 보자. 1) findAll로 List 데이터를 조회 한다. 2) 조회한 list중 하나를 삭제한다. 3)다시 findAll 로..
1) Spring Redis Cache적용하기 - 1부 Springboot 설정 cache 종류는 여러가지 있겠지만 주로 많이 쓰는 cache중 하나가 바로 Redis 이다. 여기서는 Redis서버의 설치와 설정은 다루지 않고 Springboot 설정을 어떻게 하고 어떻게 사용을 하는지에 대해 공부해 본다. 먼저 로컬에 Redis서버를 설치해야 되나? 아니다. Springboot 에 로컬에서 사용하기 위해 임베디드 Redis 를 지원하는 라이브러리가 있다. 이것을 이용해서 간단히 로컬서버를 띄울때 Redis 서버를 띄우고 연결하는 방법을 알아 본다. 1) build.gradle 에 redis dependency추가 2) redis server에 필요한 설정 application.yml 에 추가 3) redis configuration 추가 4) 서버 실행 및 테스트 코드 작성후 테스..
2) Springboot OncePerRequestFilter 와 GenericFilterBean의 차이 앞에 1부에서 간단히 springboot에서 Filter 등록하고 사용하는 방법에 대해 알아 봤다. 앞의 예제에서 보면 아래와 같은 흐름으로 동작을 하는것을 알 수있다. 1) api 1 호출 request 2) first , second filter 3) api1 controller 요청받음. 요청 처리 후 , api2로 sendRedirct 함. 4) 다시 first , second filter를 탐 5) api2 controller 요청받음. 요청 처리후 response 이런 흐름을 보여주고 있다. 여기서 문제점은 실제 요청자는 요청을 한번만 했을뿐인데 흐름상 요청을 두번한것과 같은 형태가 되어 있다. first 와 second 의 필터가 어떤것이냐 하는 상황에 따라 다르겠지만 간단히 인증처리를 하는..
1) Spring Boot Filter 사용하기 spring boot에서 필터를 사용하기 위해서는 2가지 방법을 사용한다. 1) Configuration 을 통해 Bean으로 필터를 등록 package com.devracoon.test; import com.devracoon.test.filter.OneFilter; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class SpringConfig { @Bean public FilterRegis..
3) Spring boot 단위테스트 3부 - REST API 테스트 REST API 테스를 위해 아래와 같인 간단한 API 테스트 코드를 작성해 봤다. 코드를 보면서 하나씩 알아보자. package com.devracoon.jpa.controller; import static org.mockito.ArgumentMatchers.any; import static org.mockito.BDDMockito.given; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.W..
2) Spring boot 단위테스트 2부 - JPA @Repository 테스트 1부에 앞서 2부는 JPA Repositry에 대한 테스트를 해보고자 한다. 먼저 테스트를 위한 Repository와 Entity 들이다. package com.devracoon.jpa.entity; import java.util.ArrayList; import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence...
1) Spring boot 단위테스트 1부 - @Service 영역테스트 단위테스트에 대해 알아보자. Spring MVC 는 크게 @Controller , @Service , @Repository 로 나눤다. Springboot는 org.springframework.boot:spring-boot-starter-test 를 지원하면서 간단히 테스트에 필요한 라이브러리를 지원한다. build.gradle파일에 test를 추가해보자. plugins { id 'org.springframework.boot' version '2.4.3' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } group = 'co..

반응형