본문 바로가기

전체 글43

[Spring] FeignClient 란 무엇일까? 오늘은 현업에서 많이 사용하고 있는 FeignClient에 대해 소개해보려고 한다. 이론 뿐만 아니라 실습까지 진행하면서 개념을 숙지해보자~~ 그럼 출발!! FeignClient를 도입한 이유는? 현재 우리 팀은 서비스 별로 관리를 하는 MSA를 채택하여 사용하고 있다. 크게 서비스 별로 나눈 그림을 살펴보면 내가 개발하는 service가 따로 있고, 회사 내부적으로 사용하는 공통 OPEN API가 따로 있으며 마지막으로 외부 API가 있다. 이때, 로그인을 하기 위해서는 반드시 내부 OPEN API에서 Access Token을 받아와야 하는 구조이다. 그렇다면 어떻게 백엔드 통신 코드를 작성할 수 있을까? 크게 두가지로 RestTemplate 방식과 FeignClient 방식이 있다. 즉, FeignC.. 2023. 7. 17. 더보기
[JAVA] stream을 활용해보자 취직하고 4개월 만에 다시 기술 블로그를 오픈해보고자 한다..!! 입사하자마자 신규 프로젝트에 투입되어서 할 일이 너무 많아서 잠시 자기계발에 손을 놨던 것 같다. 지금 회사로 만족할 수 없는 킹명주의 여정이 다시 시작된다 후,,, 이번에 신규 프로젝트를 하면서 for문을 많이 사용했는데, for 문에 대한 가독성 문제나 스타일 등에 대해 지적을 많이 받았다 ㅠㅠ,, 그래서 찾아보았던 것이 stream이였다. 그래서 이번에는 stream 활용에 대해 소개하고 예전에 진행했던 프로젝트에도 stream을 활용하고자 한다. Stream 너 뭐세요? 사실 내 블로그가 인기가 원래 없긴 했는데 GPT의 급 성장으로 인해 더 인기가 없어졌다 ㅠㅠ,, 그래서 GPT에게는 없는 정보가 무엇일까? 생각 해봤는데 없다 ㅎ.. 2023. 7. 14. 더보기
[Spring] CORS 쉽게 처리하기 어느날.. 순조롭게 일기장 플랫폼을 개발하던 중 위 사진과 같이 CORS 오류가 발생했다... 띠용~~ 개발하기도 바쁜데 CORS 오류는 무엇일까..? 그래서 바로 오류를 해결하기 위해 CORS란 무엇이고 해결 방법은 무엇이 있는지 공부하게 되었다. 이번에는 공부한 내용을 바탕으로 CORS 오류에 대해 알아보자!! CORS 넌 뭐니? CORS를 이해하기 위해서 반드시 숙지해야 하는 개념이 있다. 그것은 바로 CORS와 반대 개념을 가진 SOP이다. SOP(Same-Origin Policy)는 같은 출처의 리소스만 공유할 수 있음을 의미하는 정책이다. 그렇다면 CORS는 무엇일까? CORS(Cross-Origin Resource Sharing)는 다른 출처의 자원 사용에 대한 허용/비허용 정책이다. 오케이.. 2023. 2. 22. 더보기
[Spring] AOP 맛보기 오늘은 AOP와 관련한 내용을 다루고자 한다. 순서는 AOP를 도입해야겠다고 생각한 계기, AOP란 무엇인지 그리고 간단한 실습을 통해 AOP의 2%를 맛볼 예정이다. 왜 AOP를 도입!? 작년 대외활동에서 진행한 프로젝트에 대해 자체적으로 코드리뷰를 수행하고 있다. 그런데, 각 기능을 수행하기 전 JWT 보안 인증을 거치는 중복 코드가 존재했다. 좀 더 자세하게 그림으로 설명하겠다. 위 그림을 참고해보면 게시글 작성, 조회, 삭제할 때 사용자 검증을 위한 사전 작업이 필요하다는 것을 확인할 수 있다. 물론, 이렇게 개발을 진행해도 크게 문제될 것은 없다. 그러나 요즘 clean code가 트랜드 아니겠는가!? 그래서 현재 프로젝트 구조에서 어떻게 하면 가독성 좋은 깔끔한 구조가 될지 고민하게 되었다. .. 2023. 2. 21. 더보기
[Spring] @Setter vs @Builder Entity, Dto를 개발하다보면 @Setter를 써야할지 @Builder를 써야할지 고민된적이 있을 것이다. 그리고 강의나 블로그에 보면 Setter 사용을 지양하라고 되어있다. "그래 Setter 사용 안할게,, 근데 왜 사용하면 안돼?" "..." 이처럼 이유에 대해 명확하게 정리한 곳이 없었다. 그래서 내가 개발을 진행하면서 개인적으로 느꼈던 이유에 대해 소개하고자 한다. 이게 수정이야? 생성이야? 우선 코드로 설명을 하겠다. @Entity @Setter @Getter public class Temp { @Id @GeneratedValue private Long id; private String name; } 해당 코드는 entity로 database의 table이다. 즉, 해당 테이블은 id와.. 2023. 2. 20. 더보기
[Spring] Exception Custom 최근에 개발을 많이 놓아서 블로그에 Spring 관련 지식을 정리하지 못했다. 이제부터 다시 개발을 진행해보고자 한다. 이번에는 개발을 진행하면서 가장 중요한 부분인 Spring Exception 처리에 대해 소개하고자 한다. Exception 소개 뿐만 아니라 RuntimeException을 상속받아 customizing 하는 과정을 상세하게 소개하겠다. Exception 왜 필요한가? API를 개발하면서 Exception 처리가 왜 필요할까? 정답은 없지만 필자가 생각하는 것은 크게 두 가지이다. 1. 클라이언트와 서버에서 어떤 오류인지 파악하여 바로 트러블 슈팅이 가능하다. 2. 잠재적 위험을 Exception 처리를 통해 방지한다. (ex. return null, parameter issue .... 2023. 2. 13. 더보기