본문 바로가기
728x90
반응형

Spring136

Multipart 는 HTTP POST 로만 사용 프로젝트 중 상품 수정 관련하여 통합테스트 작성 중 Multipart 관련하여 오류가 발생해 찾아보게 되었다. 발생한 오류는 405 에러로, HTTP 메서드가 잘못된 에러였다. 여기서 궁금했던 점은 , 상품 등록 할 때와 똑같이 multipart 를 사용했고, contentType 도 MIXED 를 사용을 했는데 에러가 발생했다는 점이었다. 405에러니까 HTTP 메서드를 보았는데, 등록은 POST 수정은 PUT 이었다. 따라서 PUT 이 잘못되었다는 건데, POST 가 수정으로 사용할 수 있으니 바꾸어 테스트 해보니 정상적으로 통과가 되었으며, 실제 POSTMAN 에서 직접 POST 로 수정했을 때 정상적으로 DB 데이터와 S3 데이터 모두 정상변경 되는 것을 확인했다. 이제 왜 PUT 은 안되는지 확.. 2023. 1. 11.
spring boot docker mysql 기본설정 3306 포트가 사용중이라면 아래와 같이 검색 후 종료가 가능하다. 3306 포트 찾기 : netstat -ano | findstr :3306 포트 죽이기(관리자모드로 실행) : taskkill /f /pid 5544 (pid 번호가 5544 일 경우 ) mysql 이미지 설치 버전지정 후 설치 : docker pull mysql:8.0.17 최신버전 : docker pull mysql 도커 이미지 확인 docker images 도커 설치 후 실행 + 한글 설정 docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD= --name mysql:8.0.17 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_.. 2023. 1. 9.
spring 스케줄러(Scheduler) 적용하기 스프링 스케줄러에 대해 알아보고 적용해보려고 한다. ( 개인 프로젝트에 적용해보려고 했는데, 아직 어디에 쓸지 생각이 안나서 보류중이지만, 이후 기능을 추가하거나 나중에 무조건 쓸거라 생각한다. ) 스케줄러의 종류로는 Scheduler 말고 Quartz 라는 방식도 있다고 하는데 단순한 스케줄러 구현에서는 Scheduler 를 사용한다고 한다. Quartz는 조금 더 세밀하게 동작이 가능하지만 구현이 복잡하다는 단점을 가지고 있다. 먼저, 가장 기본이 되는 것부터 동작하는 것에 대해 이해하고 Quartz 는 나중에 필요할 때 추가로 공부해보려고 한다. 스케줄러는 간편하게 @Scheduled 어노테이션을 사용해서 일정한 시간 간격, 또는 특정 시간에 코드가 실행되도록 설정할 수 있도록 도와준다. 설정관련된.. 2023. 1. 4.
Springboot AOP 적용 + 어노테이션 기반 https://josteady.tistory.com/746 AOP 란 무엇인가? + 예제 AOP(관점지향 프로그래밍) 를 간단히 설명하면 공통 처리 등의 '횡단적 관심사(부가기능)'를 추출하고 프로그램의 여러 곳에서 호출할 수 있게 설정함으로써 개발자는 실현해야할 기능인 '중심적 josteady.tistory.com 이전에 공부하면서 작성한 포스팅에 앞서, 현재 프로젝트에 적용함에 있어 다시한번 정리하고자 한다. 비슷한 내용이지만, 어노테이션을 직접 만들어본 경험이 없어 AOP 를 적용시키면서 같이 학습하는 좋은 경험이 되었다. AOP 는 공통 처리 기능(부가 기능) 을 추출해서 프로그램의 여러 곳에서 호출해 사용할 수 있도록 해준다. 내가 만들 AOP의 기능은 단순한 메서드 실행 시간 측정이다. AOP.. 2023. 1. 3.
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.
728x90
반응형