[Spring boot] 계층형 구조 -> DDD + 헥사고날 아키텍쳐로 리팩토링
·
Projects/web
프로젝트는 이제 어느정도 완성이 되었고, 기능적 동작은 대부분 구현하였다. 이번 프로젝트가 처음으로 해보는 스프링 부트 프로젝트 였었기 때문에 처음에는 입문하기 쉬운 계층형 구조로 시작을 했다.  https://kjs990114.tistory.com/33 [2] React + Spring boot 웹 개발 - Spring Security 이용 간단한 회원가입 구현Controller와 DB가 어떤 구조로 연결되있는지 몰라 구글링을통해 알아보았다. 대략 이러한 구조로 구성되있는것을 알게되었다. 따라서 나는 먼저 폴더구조를 다음과같이 바꾸었다. 이렇게 패키지kjs990114.tistory.com 현재 문제 상황 그러나 프로젝트에 기능들이 추가되면서, 서비스 레이어에 기능들이 점차 쌓이게되었다. 내부적으로 처리..
[Kson] IntellJ 플러그인 - .json to .java
·
Projects/plugin
개발 동기 학교 전공수업 모바일 앱 프로그래밍실습을 들으며 Gson 라이브러리에대해 알게되었다.Gson이란, 구글에서만든 Java, Kotlin 용 Json 파서로, Json 문자열을 class로 파싱해 인스턴스를 생성해주는 라이브러리이다. Gson 라이브러리를 사용하던 중, json 객체가 복잡하게 nested되거나, JsonArray가 혼합되는등,  복잡한 유형의  json파일은 클래스로 만들기 굉장히 까다로웠다. 내가 미리 일일히 클래스를 생성해주어야 하기때문에,조금만 실수하면 파싱이 안되고, 또 어디서 실수가발생했는지도 찾기 굉장히 까다로웠다. 문득 든생각으로, json파일만가지고 클래스(.java)를 자동으로 생성해주는 라이브러리를 만들고싶어졌다. 그 라이브러리를 만들고, Gson()과 같이 사..
[4] React + Spring boot 웹 개발 - Router를 이용한 페이지 전환
·
Projects/web
오늘은 순수 프론트엔드단만 공부해보았다. 리액트는 기본적으로 SPA(Single Page Application)이기 떄문에 최초한번 페이지로드후, 그후에는 새로고침이나 로딩없이 빠르게 컴포넌트를 전환해서 페이지를 변경하는 방법을 사용한다고한다. 페이지 전환과 관련해서 리액트의 라이브러리인 Router를 많이 사용한다고 한다. 그래서 오늘은 Router에 대해서 공부해보고 간단하게 페이지 전환을 하는것을 목표로 했다. 일단 간단한 와 컴포넌트의 Css를 만들어보았다. 이미지는 구글에 free image를 다운받아서 사용했다. 이상태에서 로그인을 하면 오른쪽 상단에 숨겨져있던 My Repository버튼이 나타난다. 이 버튼을 클릭하면 /repository로 페이지 전환이 되는것이 목표이다 (Router 사..
[namer - 2] IntellJ 플러그인 개발일지 - 간단한 class명 체크하기
·
Projects/plugin
JAVA의 naming convention중 class이름의 첫글자는 대문자 여야한다.이것을 체크해 첫글자가 소문자면 에러를 발생시키는 간단한 플러그인을 만들고 테스트해보는 과정을 진행해보았다. 소스코드 >> TestInspection.java package com.goodong.namer;import com.intellij.codeInspection.ProblemHighlightType;import com.intellij.codeInspection.ProblemsHolder;import com.intellij.psi.*;public class MyPsiVisitor extends JavaElementVisitor { private final ProblemsHolder holder; publi..
[namer - 1] IntellJ 플러그인 개발일지 - PSI(Program Structure Interface)를 이용한 코드 검사 플러그인 개발
·
Projects/plugin
개발 동기  여러명이 함께 작업하는 프로젝트에서, 코드가 길어질수록 나중에 다른 사람이 짠 변수, 함수가 무슨 기능을 하는지 이름만보고 알아보기가 너무힘들었다. (심지어 나 혼자 개발할때에도, 함수명만보고 이게 뭐였지? 무슨 기능을 했지? 이런 생각을 계속 할정도로 힘들었다. 그리고 함수를 만들때마다 이름짓는데에 시간이 꽤 많이 걸렸다) 더 나은 코드 가독성 및 통일된 코딩 스타일이 필요했음. ⇒ 코딩 컨벤션 준수하는쪽으로 맞춰진다면 좋겠다고 생각을했다.  제일 큰 문제는 일단 코드를 너나 할것없이 제멋대로 짜놓고, 나중에 이름을 리팩토링하는데 시간이 엄청많이 걸렸었다.왜 그래야하지?미리 규칙을 정해두고 시작하면 좋겠다는 생각에 이러한 플러그인을 만들게되었다. 비슷한 플러그인에는 prettier라는 플..
[Spring boot] Spring Security + JWT 이용한 로그인 세션 유지
·
Projects/web
로그인을 JWT를 이용해서 구현 + 리액트를 통한 로그인 유지를 하는것이 목표이다. [참고자료]https://youtube.com/playlist?list=PLJkjrxxiBSFCcOjy0AAVGNtIa08VLk1EJ&si=JdZK8QlkZn-bfHRr 스프링 시큐리티 JWTJWT 방식 인증을 위한 스프링 시큐리티 구현 방법 (Spring Security JWT)www.youtube.com    WebSecurityConfig.javapackage com.kjs990114.goodong.config;import com.kjs990114.goodong.jwt.JWTFilter;import com.kjs990114.goodong.jwt.JWTUtil;import com.kjs990114.goodong.jwt..
[Spring boot] Spring Security 이용해 회원가입 구현
·
Projects/web
처음 시작은 가장 구조가 직관적인 계층형 구조로 프로젝트를 시작하였다.     나는 프로젝트 구조를 다음과같이 구성했다.      >> controller/RegisterController.javapackage com.kjs990114.goodong.controller;import com.kjs990114.goodong.dto.UserDTO;import com.kjs990114.goodong.service.RegisterUserService;import lombok.RequiredArgsConstructor;import org.springframework.dao.DataIntegrityViolationException;import org.springframework.http.HttpStatus;impor..