Spring132 Ehcache 를 사용한 Cache 이용해보기 쇼핑몰 개인프로젝트를 만드는 중, 캐시에 대한 궁금증이 생겨 적용을 해보고 싶은 계획이 있었다. 대부분 캐시를 사용하면 redis 를 사용하는 것을 봐와서 나도 redis를 도입해야 하나? 라는 생각을 했다. Ehcache 를 적용한 이유는 별도의 서버를 사용해서 생길 수 있는 네트워크 지연이나 단절과 같은 이슈가 없이 사용이 가능하며 ( Spring 내부적으로 동작 ) 서버 애플리케이션과 라이프사이클을 같이 하므로 사용하기 쉽기 때문에 선택했다. 도중에, "개발바닥" 유튜브에서 포털사이트의 뉴스 등에 EhCache 를 많이 사용한다는 것을 듣고 어떤 캐시방식인지 궁금해 찾아보게 되었다. c2c쇼핑몰이라고 하면, 상품을 클릭하면 나오는 상세페이지에 사용할 수 있지 않을까 생각했다. 이유는, 상품 사진이 .. 2023. 1. 2. swagger 에 jwt token 추가하기 아래의 문서를 참고하면 더욱 쉽게 이해할 수 있다. https://www.baeldung.com/spring-boot-swagger-jwt Set JWT with Spring Boot and Swagger UI | Baeldung Learn how to set a JSON Web Token on requests to Swagger UI running in Spring Boot. www.baeldung.com 아무 세팅하지 않는 swagger 에는 authorize 를 할 수 없다. 아래의 코드를 config 에 추가해주면 토큰 인증이 필요한 경우, 토큰을 저장시켜 swagger 에서 사용이 가능하다. @Configuration @RequiredArgsConstructor @EnableSwagger2 @E.. 2022. 12. 21. H2 데이터베이스 데이터 유지하기 보통 프로젝트 시, 초기 개발단계에서는 가벼운 H2 데이터베이스를 많이 이용한다. 현재 내가 프로젝트에는 H2 인메모리 주소를 사용하고 있다. ddl-auto 가 none 이든 create-drop 이든 어떤 설정으로 해도 휘발성이기 때문에, 프로젝트를 다시 시작하게 되면 H2 DB 에 들어있는 데이터가 모두 증발해버린다. 구현이 거의 마무리되어가고, 데이터가 사라지는 것을 방지하고 싶어 해결방안을 찾아보았다. 기존 yml 파일의 내용을 보면, url 이 인메모리로 되어있는 것을 볼 수 있다. spring: h2: console: enabled: true path: /h2-console datasource: url: jdbc:h2:mem:shop username: sa password: driver-cl.. 2022. 12. 20. JpaRepository 와 CrudRepository 의 차이점 JPA 를 사용할 때 JpaRepository 인터페이스를 상속해서 사용했는데, 다른 강의에서는 CrudRepository 를 사용해 어떤 차이점이 있는지 궁금해 정리했다. JpaRepository 와 CrudRepository 모두 CRUD 기능을 기본적인 메서드를 지원해준다. 위 관계를 보면 JpaRepository 가 CrudRepository 보다 더 많은 기능을 가진 것을 예상할 수 있다. CrudRepository 는 CRUD 관련 기능들만 기본적으로 제공한다. JpaRepository 는 JPA 관련 특화된 기능을 추가로 제공한다 ( 페이징, sort 등 ) 추가적으로, findAll() 메서드를 사용할때 CrudRepository 는 Iteratable 를 반환하지만, JpaReposito.. 2022. 12. 4. JPA 순환 참조 해결해보기 쇼핑몰 개인프로젝트 구현 중 순환참조가 발생했다. 먼저 순환참조에 대해 알아보면, 순환 참조(Circular reference)란, 참조하는 대상이 서로 물려 있어서 참조할 수 없게 되는 현상을 말한다. 이전 JPA 강의를 들으면서 순환참조는 자주 발생한다 라고 해서 어떤건지 개념만 알고 있었는데, 처음 직접 마주치니 해결방법이 바로 떠오르지 않아 구글링을 통해 해결했다. 구현하고 싶었던 것은, 상품을 조회했을 때 goodsReponse 대로 응답을 내려주는 것인데 이 과정에서 순환 참조가 발생했다. 이 부분 중 imageList 와 options 부분에서 발생했다. public class Goods extends BaseTimeEntity { ... @OneToMany(mappedBy = "goods".. 2022. 11. 30. data.sql 적용하기 (스프링부트 버전 2.7.x 이상 ) application.yml 기준 spring: jpa: defer-datasource-initialization: true # 더미 데이터 적용 sql: init: mode: always # 더미 데이터 적용 resources 폴더 아래 data.sql 생성 DB에 먼저 넣어두고 싶은 sql 문을 작성해서 실행하면 완료. insert into ROLE (role) values ('USER'); 참고 https://devvkkid.tistory.com/262 data.sql이 동작하지 않을 때, 의심해봐야 할 것 스프링에서 test 패키지 내부에 data.sql을 넣은 것만으로도 data.sql 내부의 쿼리를 실행시킬 수 있다. 이런 방법으로 테스트용 더미 데이터를 생성하고 테스트를 동작시킬 수 있다. .. 2022. 11. 10. Mockito BDDMockito 의 차이점 단위테스를 처음 작성하면서 스택오버플로우 및 여러 블로그를 참고했다. 어느 블로그에서는 When() . thenReturn() 으로 사용하는 것을 보고 참고해 작성하고 있는데, 다른 문제로 인해 스택오버플로우를 보니 given() . willReturn () 을 사용해서 작성했다. 두가지 모두 Mockito 를 사용하므로 동작에 대한 차이점은 없다고 한다. 나는 given() . willReturn() 방식이 가독성 면으로 편리해서 사용하기로 했다. 차이점에 대해서 자세한 내용은 아래 블로그를 참고했다. https://velog.io/@lxxjn0/Mockito%EC%99%80-BDDMockito%EB%8A%94-%EB%AD%90%EA%B0%80-%EB%8B%A4%EB%A5%BC%EA%B9%8C Mock.. 2022. 11. 4. 단위테스트(Unit Test) 를 작성하는 이유 단위테스트는 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위 테스트이다. 하나의 기능을 테스트하며, "어떤 기능을 실행하면 어떤 결과가 나온다" 라는 테스트를 진행한다. 장점 1. 의도한 대로 작동하는지 검증할 수 있다 2. 부수적으로 코드 변경에 의한 사이드 이펙트를 최대한 줄일 수 있는 예방책 3. 리팩토링으로 인한 코드 수정이 필요한 상황에서 유연하고 안정적인 대응 통합테스트는 서로 상호작용을 하는 서비스, 레포지토리 등 컴포넌트들이 구동된 상태에서 테스트를 진행하기 때문에, 비용이 상당히 커진다. 반면 단위테스트는 해당 부분만 독립적으로 테스트하기 때문에, 빠르게 실행하며 문제여부를 확인할 수 있다. 일반 애플리케이션은 1개의 기능을 처리하기 위해서는 다른 객체들과 서로 메시지를 주고받.. 2022. 11. 4. docker 기초명령어 docker 기본 명령어 정리 ( cmd 창 기준 , httpd 기준 ) docker hub 에서 설치항목 및 설치 명령어를 확인할 수 있다. images : docker 에 설치된 프로그램 container : images 를 실행하는 것 https://docs.docker.com/ Docker Documentation docs.docker.com 목록 명령어 httpd 설치 ( 아파치 ) docker pull httpd 설치된 프로그램 조회 docker images 설치된 프로그램 으로 컨테이너 생성하기 ( httpd 기준 ) docker run httpd -> 이름이 랜덤하게 설정된다 docker run --name ws2 httpd -> 이름이 ws2 인 httpd 를 생성한다 사용하고 있는 프로.. 2022. 10. 29. 이전 1 ··· 4 5 6 7 8 9 10 ··· 15 다음