springboot
-
Kotlin + SpringBoot + Kafka 연동해보기 ( + spring kafka 와 reactor kafka )네트워크 & 인프라 2022. 11. 25. 01:40
아파치 카프카는 지난 번에 간단하게 개념정도만 정리했었는데, 이번에는 직접 사용할 일이 생겨서 kotlin에서 springboot + kafka 사용 방법을 공부했다. (지난 카프카 공부내용 정리 블로그 글) ↓ https://dodop-blog.tistory.com/409 아파치 카프카 EDA를 배우면서 카프카에 대해서 알게 되었고, 유튜브를 찾아보니 다음의 플레이리스트 강의가 있어서 아주 간단하게 기본 개념만이라도 학습해보았다! 정리한 자료 및 사진은 모두 영상의 내용 dodop-blog.tistory.com 카프카 설치 및 실행하기 먼저 카프카를 설치해준다. 해당 기준은 m1 processor를 기준으로 진행하였다. # brew를 통해서 kafka를 설치하면 zookeeper는 추가적인 설치가 필요..
-
Springboot와 React(Axios)에서 컨트롤러 prefix 수정하기Spring 2022. 5. 30. 20:30
어느정도 리팩토링을 마치고 ec2로 배포하려고하니 계속해서 문제가 발생한다.😖 중간중간 계속해서 실행해보고 미션 공부하면서 프로젝트에 바로바로 적용하도록 수정했으면 이리 고생하지 않았을텐데 증말 〰️ 프론트엔드와 백엔드를 각각 ec2 서버를 생성하고 리버스 프록시를 생성하고 실행하려고하니 prefix로 분리해서 요청을 보내고 싶은데,,, 원래 개발할때부터 prefix를 정해놓고 했어야했는데,,, 실행하려고 보니 이 간단한 분리도 안되어있다. (머리짚🤦♀️) 그래서 한번에 적용하려고 방법을 찾게 되었다. Springboot server.servlet.contextPath=/api Springboot에서 api prefix를 적용하는 방법은 Controller에서 @RequestMapping을 이용하여 적..
-
예외처리전략 ( ExceptionHandler ) 2Spring 2022. 1. 13. 18:17
https://dodop-blog.tistory.com/229 예외처리전략 (Exception Handler) 스프링에서 예외처리를 해주자. 예외발생 데이터타입을 일관된 형태로 생성해서 반응하도록 설정해준다. Error Response 먼저 예외의 형태를 잡아주는 클래스를 작성해준다. 메세지와 상태, 시간정 dodop-blog.tistory.com 이전 글에서 예외처리 전략을 이용하여 예외발생 데이터타입을 일관된 형태로 생성해서 반응하도록 설정하는 방법을 알았다. 그런데 여기서 모든 customException을 RuntimeException을 상속받아 중복되는 NotFoundException의 경우에도 모두 ControllerAdvice(GlobalExceptionHandler)에서 일일이 처리해주어야..
-
Amazon S3를 이용해서 파일 저장, 삭제하기Spring 2021. 11. 5. 22:54
이미 프로젝트의 로컬폴더에 이미지 저장하는 코드를 구현했었다. (FIle Uplaod Utils) 이것을 amazon S3를 통해서 원격으로 S3에 파일을 처리하도록 해보자. 먼저 aws에 가입해서 버킷을 만들어 주고 '내 보안자격 증명'에서 access_key와 secret_key을 만들어준다. (생략) 여기서 발급받은 access_key, secret_key는 절대! 외부로 노출되지 않도록 해야한다. (해당 키를 public github에 올린다거나 하면 aws에서 연락이 왔다는 글도 봤다.) 결제 카드를 등록해서 가입하고 결제와 관련된 부분이므로 조심 또 조심해야한다. (로그인 2차 보안도 해놓자) S3 Dependency com.amazonaws aws-java-sdk 1.11.1000 https..
-
Springboot(Maven), React, MySQL 프로젝트 Heroku 배포하기Spring 2021. 11. 5. 22:06
웹 앱에 대한 서버와 프론트엔드 (rest api로 프록시를 설정해서 연결 완료) 개발을 완료했다면, 이제 데이터 베이스와 함께 앱 배포를 해야한다. (여기서 거진 5일을 소비했다...^^) 개발 겨우 다해놨는데 외않되,,,?ㅎ 이러한 사태를 방지하기 위해서 꼭 애초에 프로젝트 구성을 잘 짜는 것이 중요하다. 프로젝트를 프론트엔드, 백엔드 따로따로 모두 완성해서 다른 포트에 실행하는 상태라면 다음의 순서대로 배포해보자. frontend를 backend 폴더 안으로 옮겨주기 이 프론트엔드를 백엔드로 옮겨주기란 것은 다음과 같이 인텔리제이로 완성된 백엔드앱 안에 프론트 엔드를 넣어주는 것이다. 📦APP ├── 🗂backend │ ├── src ├── 🗂frontend 처음의 이러한 구조에서 📦APP ├── ..
-
controller에서 파라미터를 받는 방법 : @RequestParam, @RequestBody, @PathVariable (+ DTO를 포함하는 DTO)Spring 2021. 10. 26. 13:18
스프링에서 프론트엔드에서 넘어온 데이터를 받는데에는 대표적으로 3가지 방식이 있다. @RequestParam @GetMapping("/activity") public ActivityDTO getActivity(@RequestParam(value = "id", required = true)String id){ Integer activityId = Integer.parseInt(id); return activityService.getActivity(activityId); } @RequestParam에서는 프론트엔드로부터 http://localhost:8080/activity?id=2 의 형식으로 요청이 넘어오게 된다면 물음표 뒤의 아이디 값을 받는 어노테이션이다. value 혹은 name으로 넘어오는 데이터..
-
No serializer found for class Exception 에러 해결방법Spring 2021. 9. 5. 21:42
다대일, 일대일 관계의 설정에서 no serializer 에러가 나는 경우를 확인해보자. No serializer found for class Exception 엔티티 매핑 설정에서 fetch타입이 Lazy로 설정되어서 데이터가 아직 넘어오지 않았을 때 발생하는 에러이다. repository findby를 이용할때 발생되는 경우가 많다. 이러한 경우 해결방법이 3가지가 존재한다. ㉮ @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}), @JsonIgnore 어노테이션을 통해서 오류나는 매핑 엔티티 설정 바꿔주기 ㉯ LAZY설정된 엔티티를 EAGER로 바꿔서 가져오기 ㉰ application 파일안에 spring.jackson.serializat..
-
@ManyToMany, @OneToMany, @ManyToOne관계 작성하기Spring 2021. 9. 5. 21:33
엔티티 매핑을 하다보면 엔티티와의 관계가 1:N, N:1이 아닌 N:N의 관계를 가진 경우가 존재한다. (ex. 팀-회원의 관계) 이러한 경우 다:다 의 관계로 매핑되는데, 이럴경우 조회 쿼리, 외래키를 어디에 위치시키는 가에 대한 여부를 알아본다. @ManyToMany 관계 조인테이블에서 데이터정보의 추가와 부가기능추가는 불가능해지기 때문에, 다대다 관계는 권유되지 않는다. 실무에서는 일대다, 다대일-다대일, 일대다의 관계로 풀도록 가운데 엔티티를 추가해서 풀어주도록 한다. 엔티티 설정 유저와 팀의 엔티티에 다음과 같이 작성해준다. 멤버와 팀은 서로 다대다 관계이다. 외래키는 user가 가지고 있기 때문에 다대다 관계의 매핑정보를 수정하기 위해서는 user측에서 다음과 같은 addTeam의 함수를 이용..