전체 글
Filter와 OncePerRequestFilter
Filter와 GenericFilterBean Filter는 javax.servlet-api나 tomcat-embed-core를 사용하면 제공되는 Servlet Filter 인터페이스입니다. Filter는 서블릿이 실행되기 전, 후로 호출됩니다. 이 Filter 인터페이스를 조금 더 확장하여 스프링에서 제공하는 필터가 바로 GenericFilterBean 입니다. GenericFilterBean 추상 클래스는 Filter 인터페이스를 상속받고 있는데 이외에도 Spring의 설정 정보를 가져오고 세팅할 수 있도록 확장된 추상 클래스입니다. (ServletContext를 get,set 하는 등..) Filter 인터페이스 외에도 여러 인터페이스들을 구현하고 있지요? public abstract class G..

JWT (JSON Web Token) 이해와 구조
이번 글에서는 JWT 구조와 간단한 알고리즘 설명, 마지막으로 JWT 생성 과정에 대해 설명할 예정입니다. JWT 홈페이지를 참고하였고 추가 설명을 작성하였습니다. JWT(JSON WEB TOKEN)는 쿠키와 세션 방식을 거치는 과정 속에서 나타난 하나의 인터넷 인증 표준 포맷입니다. 말 그대로 인증에 필요한 정보(JSON 객체)들을 토큰에 담아 전송하는 방식입니다. JSON 객체란? "속성-값" 쌍 또는 "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷 이 정보는 디지털 서명이 되어있기 때문에 안전하게 인증을 시도할 수 있습니다. (서명에 쓰이는 알고리즘은 HMAC 알고리즘,RSA(공개 / 개인 키 쌍 사용) 등의 알고리즘이 있습니다.)..

링킹 (Dynamic Linking vs Static Linking)
이번 글에서는 링킹에 대해 알아보겠습니다. 링킹의 의미 우선 자바 코드를 컴파일(바이트코드로 변환)한 오브젝트 파일을 실행을 시켜야하는데 오브젝트 파일만으로는 실행시킬 수 없습니다. 그래서 실행시키기위해서 해당 코드에서 필요로 하는 다른 프로그램 혹은 외부 라이브러리들을 가져와 연결하는 과정이 링킹입니다. (작성한 코드에서 사용한 외부 라이브러리를 알 수 없으면 당연히 정상적으로 실행될 수 없겠지요) 링킹 과정을 거치고 나면 .exe 실행파일이 만들어집니다. 이러한 링킹을 담당하는 프로그램이 링커입니다. 링킹의 종류 이제 링킹의 종류 2가지를 알아봅시다. 정적 링킹(Static Linking)과 동적 링킹(Dynamic Linking)이 있습니다. 정적 링킹 정적 링킹이란 실행 가능한 파일을 만들 때 프..

JDK, JVM, JRE
세 용어는 자주 쓰이지만 그만큼 명확히 이해하지 못한 개념에 대해서 정리해놓으려 합니다. 워밍업 자바로 프로그래밍을 하려면 먼저 JDK를 설치해야합니다. JDK를 설치하면, 자바가상머신(JVM)과 자바 클래스 라이브러리(JRE)+ 자바를 개발하는데 필요한 실행파일들(JDK)이 설치됩니다. 쉽게 말해, JDK : JRE + 개발에 필요한 실행파일(javac.exe 등) JRE : JVM + 클래스 라이브러리 + 자바 런타임 환경에서 사용하는 프로퍼티 세팅이나 리소스 파일 JVM : 자바 가상 머신 더보기 bin 디렉터리의 주요 파일 1) javac.exe : 자바 컴파일러.자바 소스코드를 바이트 코드로 컴파일 합니다. 명령어 : (경로)\javac Hello.java 2) java.exe : 자바 인터프리..

Spring MVC Request Lifecycle
이번 글에서는 Spring MVC 라이프 사이클에 대해 이야기해보고자 합니다.라이프 사이클이 저에게는 복잡하기도 하고 이번 글도 이해하는 과정 중에 작성하는 글이므로 잘못된 부분은 일러주시면 감사하겠습니다 :^) Spring MBC의 요청 Life Cycle에 대해 다루기 전에 Servlet과 Servlet Container에 대해 알아보겠습니다. ServletServlet이라는 기술은 웹 서버의 성능을 향상시키기 위해 사용되는 Java 클래스의 일종입니다.일반적으로 Java 기반의 웹 애플리케이션을 만들기 위해 사용되고, 웹 서버에서는 다양한 요청을 처리하기 위해서 굉장히 많은 low level 기술이 필요한데, 이때 서블릿을 이용한다고 볼 수 있습니다.그래서 좁은 의미로는 서블릿을 (자바 기반의) ..

단위 테스트 코드 작성 (JUnit5)
단위 테스트는 우리가 코드를 작성하는 방식에 이미 녹아있는 것이지 별도의 작업이 아니다. 테스트하지 않았다면 코드 작성을 완료했다고 할 수 없다. 단위 테스트는 코드가 제대로 구현되었는지 확인하는 가장 좋은 방법이다. - 도서 '소프트웨어 장인' 中 - 오늘은 필자가 현재 진행 중인 프로젝트에서 구현한 방문 가게의 리뷰글을 CRUD하는 기능에 대한 몇 가지 테스트 코드를 작성하는 겸 기록해놓기 위해 이 포스팅을 시작합니다. 테스트는 Repository, Service에 대한 단위 테스트(Unit Test)를 진행할 것이고 중점을 둔 부분은 "의존성을 최대한 줄였는가?" 입니다. Unit Test는 말그대로 단위 테스트이므로 @SpringBootTest 어노테이션을 통해 스프링을 실행시키지 않을 것이고, ..