MapStruct란 ?? 구성 접근 방식에 대한 규약을 기반으로 자바 빈 유형 간의 매핑 구현을 크게 단순화하는 코드 생성기이다. 생성된 매핑 코드는 일반 메서드 호출을 사용하므로 빠르고, Type-Safe하며, 이해하기 쉽다. 사용하는 이유 다중 계층 애플리케이션은 종종 서로 다른 객체 모델(예: 엔티티 및 DTO) 간에 매핑하는데, 이러한 매핑 코드를 작성하는 것은 지루하고 오류가 발생하기 쉬운 작업이다. MapStruct는 이 작업을 최대한 자동화하여 단순화할 수 있도록 도와준다. 사용방법 MapStruct는 Java 컴파일러에 연결된 어노테이션 프로세서로, 원하는 IDE 내에서뿐만 아니라 명령줄 빌드(Maven, Gradle 등)에서도 사용할 수 있다. MapStruct는 적절한 기본값을 사용하지..
회사에서 디버깅중 ModelMapper에 대한 오류가 떠서 이것이 정확히 가이드라인대로 사용하고 있는지 파악하고 작동원리를 파헤쳐 보자. ModelMapper 용도 : 자바에서 한 객체에서 다른 객체로 데이터 값을 넣어줄 때 OO.set 메서드를 사용해서 각 값을 입력해주어야 하거나, 값 매핑을 해주는 새로운 메서드를 만들어야 하는데. 이 것은 개발자에게 매우 단순 반복 작업이 될 수 있다. 이 때 ModelMapper 라이브러리를 활용하면 이 단순반복 작업을 해당 라이브러리가 자동으로 할 수 있게 해준다. 원리 : 리플렉션을 이용해서 Type비교를 해주고 설정한 매핑되는 방식, 매핑 전략 에 따라서 각종 프로퍼티(속성) 접근, 변경 , 무시 등이 일어 날 수 있게 도와준다. 사용하기 : 1. 의존성 추..
객체 하나의 상태가 변할 때마다 등록된 객체들에게 자신의 상태값을 전달하는 패턴입니다. 예시로, 상품을 구매하였을 때 알림을 전달해주는 프로그램을 작성해봅시다. 해당 내용을 설명하자면, 상품 구매 시스템에서 구매가 일어나면 구매정보 객체로 해당 내용들을 전달하고 홈페이지, 관리자앱, 회원앱으로 해당 정보들을 혹은 메시지를 전달하게 됩니다. 코드를 작성해 보겠습니다. 1. 초기 코드 작성 public class Homepage, ManagerApp, MemberApp { public static void notify(String productName, int count, String buyer, String buyDt){ System.out.println("Homepage Logg ======> \n pr..
들어가기전에... 디자인 패턴을 공부 & 사용하는 이유 코드 짠걸로 의사소통을 할 때, "A라는 클래스가 존재 할 때, A클래스에 새로운 데이터가 들어오면 A클래스에 의해 관리되는 객체들에게 이 데이터를 전송해줄 수 있고, 관리되는 객체들은 언제든지 관리에서 이탈하거나 참여할 수 있는 코드를 만들었어" 라는 말은 사실 '옵저버패턴'을 이야기 한 것입니다. '옵저버패턴'을 정확히 이해하고있으면 앞의 장황한 설명보다 훨씬 빠르게 의사전달을 할 수 있습니다. 코드를 수정 하거나 작성할 때, 나의 설계디자인이 잘 못 된것은 아닌지 되짚어 볼 수 있습니다. 많은 사람들이 오랜 시간 고민해서 찾아낸 디자인 패턴은 유연성, 재사용성, 관리하기 쉬운 시스템을 만들 수 있게 도와줍니다. 물론, 무조건 디자인패턴을 도입하..
자주 쓰이는 Git 명령어를 사용해보자 1. Windows Command Prompt 시작 - > 실행 - > cmd dir : 현재 디렉토리내의 파일 출력 cd [이동위치] : 디렉토리 이동 2. Git 설정 git config --global user.name [유저이름] : 글로벌 유저이름 설정 git config --global user.email [유저이름] : 글로벌 유저이메일 설정 git config --global core.eol native / crlf / lf : 개행처리에 대한 설정 OS 별 CRLF 차이로 인한 문제를 막기 위해 OS 별로 다음과 같이 설정한다. Windows 일때 : git config --global core.autocrlf true Linux, OSX 일때 : ..
인터셉터란? 스프링에서 제공하는 제공하는 기능으로 Dispatcher Servlet과 매핑된 URL의 Controller의 사이에서 존재하며 해당 Controller 호출 전과 후에 요청, 응답을 참조하거나 가공할 수 있는 필터라고 볼 수 있다. 주 용도로는 인증/인가 작업이나, API 호출에대한 로깅, 요청 응답 정보 가공등이 있다. 여기서 의문이 드는점이 있는데, 사실 필터랑 인터셉터랑 무슨 차이가 있냐이다. 1. 관리 주관자가 다르다. 필터 : 웹 Servlet 컨테이너 , 인터셉터: 스프링 컨테이너 2. Request,Response 객체를 새로운 객체로 넣을 수 있나? 필터 : Yes , 인터셉터 : No -> 필터에서는 request,response를 다음 필터로 넘겨주는 필터 체인을 쓰나, ..
필터란 말그대로 지정한 URL 패턴에 대해 거름막 역할을 해주는 기능이다. 가장 중요한 것은 서블릿을 투과한 후 Filter를 거치고 그 이후에 스프링 영역(DispatcherServlet)에 접근하게 된다. 주요 사용하는 용도로는 인코딩, XSS, CORS 등에 관한 설정을 주로 한다. 이전 Spring에서는 web.xml에서 Java파일을 Filter를 추가하여 사용 할 수 있었는데, SpringBoot에서는 Annotation을 사용하여 Filter를 추가 할 수있다. 먼저 사용할 CustomerFilter를 Servlet이 제공하는 Filter인터페이스를 구현하여 만든다. 이때, chain.doFilter(request,response);를 해주지 않으면 다음 필터를 넘어가지 않게 되니 주의해서 ..