MapleStory Finger Point
[정적 코드 분석] sonarQube 사용해보기
·
ETC
"구글 엔지니어는 이렇게 일한다" 라는 책을 읽고 있는데, 정적 분석에 대한 중요성을 강조하고 있었다. 그래서 호기심이 생겨 정적 분석을 해보고 싶었는데,, 현재 우리 팀에서는 사용하고 있지 않다.. ㅜㅜ 그래도 포기할 수 없어서 팀 몰래 코드 정적 분석 툴을 도입해보고자 한다!!! (로컬에서 나만 사용할 예정~~) 정적 분석이 뭐야? 정적 분석이란 소프트웨어 개발 단계에서 소스 코드를 실행하지 않고도 코드의 구조, 문법, 품질 등을 분석하는 것을 의미한다!! 그렇다면 굳이 소스 코드를 돌려보지 않고 분석을 하는 이유는 무엇일까? 1. 버그와 결함의 조기 발견이 가능하다. 코드를 실행하기 전 상태이기 때문에 버그를 조기에 발견하여 수정할 수 있고, 이후 소프트웨어 개발 과정에서 발생할 수 있는 비용과 시..
[Spring] Static Class, Custom Builder 소개
·
SPRING
요즘 날이 너무 더워서 사망 직전까지 가고있다.. 근데,, 비까지 많이 오니 최악이다.. 그러니 블로그라도 활기차게 써야겠다 ^ 3^ 요번에는 Static Class와 Custom Builder 패턴에 대하여 소개하겠다. 이 부분도 현업에서 가장 많이 사용하고 있는 부분인데, 가독성 좋은 코드를 짜기에 매우 좋다고 판단하여 이번에 소개하고자 한다. Static Class 현업에서 Static class는 클래스 내부에서 클래스를 지정할 때 사용하고 있다. 아 !! 그러면 Static Class는 Inner Class를 구현하기 위해 활요하는 것!! 이라고 생각하면 쉽다. 그렇다면 어떤 장점이 있을까? 개인적인 경험을 바탕으로 가장 좋았던 장점 두 가지를 간단하게 소개하자면 1. Package 정리 저~~..
[Spring] FeignClient 란 무엇일까?
·
SPRING
오늘은 현업에서 많이 사용하고 있는 FeignClient에 대해 소개해보려고 한다. 이론 뿐만 아니라 실습까지 진행하면서 개념을 숙지해보자~~ 그럼 출발!! FeignClient를 도입한 이유는? 현재 우리 팀은 서비스 별로 관리를 하는 MSA를 채택하여 사용하고 있다. 크게 서비스 별로 나눈 그림을 살펴보면 내가 개발하는 service가 따로 있고, 회사 내부적으로 사용하는 공통 OPEN API가 따로 있으며 마지막으로 외부 API가 있다. 이때, 로그인을 하기 위해서는 반드시 내부 OPEN API에서 Access Token을 받아와야 하는 구조이다. 그렇다면 어떻게 백엔드 통신 코드를 작성할 수 있을까? 크게 두가지로 RestTemplate 방식과 FeignClient 방식이 있다. 즉, FeignC..
[Spring] AOP 맛보기
·
SPRING
오늘은 AOP와 관련한 내용을 다루고자 한다. 순서는 AOP를 도입해야겠다고 생각한 계기, AOP란 무엇인지 그리고 간단한 실습을 통해 AOP의 2%를 맛볼 예정이다. 왜 AOP를 도입!? 작년 대외활동에서 진행한 프로젝트에 대해 자체적으로 코드리뷰를 수행하고 있다. 그런데, 각 기능을 수행하기 전 JWT 보안 인증을 거치는 중복 코드가 존재했다. 좀 더 자세하게 그림으로 설명하겠다. 위 그림을 참고해보면 게시글 작성, 조회, 삭제할 때 사용자 검증을 위한 사전 작업이 필요하다는 것을 확인할 수 있다. 물론, 이렇게 개발을 진행해도 크게 문제될 것은 없다. 그러나 요즘 clean code가 트랜드 아니겠는가!? 그래서 현재 프로젝트 구조에서 어떻게 하면 가독성 좋은 깔끔한 구조가 될지 고민하게 되었다. ..
[Spring] @Setter vs @Builder
·
SPRING
Entity, Dto를 개발하다보면 @Setter를 써야할지 @Builder를 써야할지 고민된적이 있을 것이다. 그리고 강의나 블로그에 보면 Setter 사용을 지양하라고 되어있다. "그래 Setter 사용 안할게,, 근데 왜 사용하면 안돼?" "..." 이처럼 이유에 대해 명확하게 정리한 곳이 없었다. 그래서 내가 개발을 진행하면서 개인적으로 느꼈던 이유에 대해 소개하고자 한다. 이게 수정이야? 생성이야? 우선 코드로 설명을 하겠다. @Entity @Setter @Getter public class Temp { @Id @GeneratedValue private Long id; private String name; } 해당 코드는 entity로 database의 table이다. 즉, 해당 테이블은 id와..
[Spring] Exception Custom
·
SPRING
최근에 개발을 많이 놓아서 블로그에 Spring 관련 지식을 정리하지 못했다. 이제부터 다시 개발을 진행해보고자 한다. 이번에는 개발을 진행하면서 가장 중요한 부분인 Spring Exception 처리에 대해 소개하고자 한다. Exception 소개 뿐만 아니라 RuntimeException을 상속받아 customizing 하는 과정을 상세하게 소개하겠다. Exception 왜 필요한가? API를 개발하면서 Exception 처리가 왜 필요할까? 정답은 없지만 필자가 생각하는 것은 크게 두 가지이다. 1. 클라이언트와 서버에서 어떤 오류인지 파악하여 바로 트러블 슈팅이 가능하다. 2. 잠재적 위험을 Exception 처리를 통해 방지한다. (ex. return null, parameter issue ....
[Spring] Google Login API 사용하기
·
SPRING
현재 프로젝트를 진행하고 있는데 회원 가입 부분에서 많은 시행착오를 겪었다. 그래서 이번에는 진짜 간단하게 google login api를 연동하는 방법에 대해 소개하고자 한다. (나의 시행착오를 바탕으로..) 흐름 많은 블로그에서 로그인 flow를 알려주기 보다는 oauth2 flow를 알려주곤 한다. 여기서 이해한다고 굉장히 많은 시간을 사용했다.. 그래서 정말 쉽게 어떻게 로그인이 되는지에 대해 그림으로 나타내보겠다. 이게 끝이다. 모든 과정을 거치게 되면 자신이 원하는 정보를 쏘옥~ 빼서 사용하면 된다. 가장 많이 사용하는 정보는 아마 이메일일 것이다. 왜냐하면 이메일을 통해 가입 또는 로그인 시킬 것이기 때문이다. 예를 들어 4번 과정을 통해 킹명주@gmail.com 이라는 계정을 얻어왔다고 하..
[Spring] JPA CASCADE
·
SPRING
게시글 관련 기능을 구현하다가 질문글을 삭제했을 때 Delete, Update ~~~ Foreign error 라는 문구가 출력되었다. 왜 이런 오류가 출력되었을까?!!!! 게시글 관련 DB는 다음과 같다. 질문과 답변 테이블이 1대다 관계인 것을 확인할 수 있다. 만약, 질문 하나를 삭제할 때 답변이 달려 있는 경우 어떻게 될까?? 내가 발생했던 오류와 같이 외래키 제약조건 에러가 출력될 것이다. 해당 방법을 해결하는 방법은 크게 두 가지가 있을 것이다. 테이블 생성 시 제약조건 지정, Spring 코드 내에서 해결 첫 번째 상황을 예로 들면 # MySQL ADD CONSTRAINT [제약조건 이름] FOREIGN KEY(컬럼 명) REFERENCES [부모테이블 명](PK 컬럼 명) [ON DELET..
📌 공지사항

1. 광고 댓글 자제 부탁드립니다😭😭

2. 업무 중에는 질문 답변이 늦을 수 있습니다!

3. 초보자라 잘못된 부분이 많습니다
     많이 알려주세요😊

4. 이 블로그가 성공하더라도 광고로 수익 창출
     하지 않겠습니다🫡


📧 mjoo1106@naver.com