전체 글

전체 글

    [Spring] 인터셉터(Interceptor)에 대해 알아보자!

    [Spring] 인터셉터(Interceptor)에 대해 알아보자!

    인터셉터(Interceptor)란? intercept의 의미가 '가로채다'이니 interceptor는 '가로채는 행위를 하는 주체' 정도로 정의할 수 있다. 그럼 interceptor는 무엇을 가로채는 것일까? 바로 클라이언트의 요청과 서버의 응답을 가로챈다. 그림에서 알 수 있듯이 클라이언트의 요청이 컨트롤러에 닿기까지 거치는 과정들이 있다. 이전 포스팅에서 클라이언트의 요청을 가장 먼저 만나는 Filter에 대해 알아보았는데 요청을 했을 때 정말 저런 순서를 거치는지 눈으로 확인해보자! interceptor는 어떤 경우에 사용할까? interceptor는 Controller 작업을 수행하기 전/후에 추가적인 작업을 진행하기 위해 사용한다. 예를 들어, 관리자 계정에서만 볼 수 있는 전체 회원의 정보를..

    JPA와 Mybatis 차이점

    JPA와 Mybatis 차이점

    데이터를 다른 곳에 저장하고 사용하기 때문에 프로그램을 종료해도 데이터는 사라지지 않는다. 이런 개념을 영속성(Persistence)을 가진다고 표현한다. Java는 데이터에 접근하기 위해 JDBC(Java Database Connectivity) API를 제공해준다. 하지만 기존의 JDBC API는 코드가 길고 반복될 뿐 아니라 SQL 문의 수정이 필요할 경우 Java 코드를 수정해야 하기 때문에 좋지 않다. 그래서 JDBC API가 가지는 문제점을 해결하기 위해 Persistence Framework가 나타나게 된 것이다. Persistence Framework는 Java의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 도와주는 틀이다. Persistence Framework에는 SQL Mapper와 ..

    [Spring] Filter에 대해 알아보자 !

    클라이언트가 요청을 하면 Controller까지 접근하기 위해서는 중간중간 거치는 과정들이 있다. 그래서 이번 포스팅의 주제는 Spring Filter에 대해 알아보려고 한다. Spring Filter 위 그림에서 볼 수 있듯이 클라이언트의 요청을 가장 먼저 마주하는 것이 바로 Filter이다. Dispatcher Servlet에 도달 전/후에 모든 요청에 부가 작업을 처리할 수 있는 기능을 한다. 또한 Filter는 FilterChain에 의해 여러 필드가 연쇄적으로 동작할 수 있다. Filter는 스프링 컨테이너가 아닌 톰캣같은 웹 컨텍스트에 의해 관리된다. 즉, 스프링 범위 밖에서 처리되는 것이다. Filter는 어떤 경우에 쓰이는 걸까? → Filter는 요청에 대한 인증, 권한 체크 등을 하는 ..

    [Spring Boot + Spring Security + jwt] OAuth2를 활용하여 로그인

    Google 클라우드 플랫폼을 클릭해서 페이지 이동을 하자. 좌측 상단에 보면 노란색 부분을 클릭해서 프로젝트를 하나 만들어주자. 프로젝트 이름은 아무거나 해도 상관없으니 식별하기 쉽게 만들자 ! 사이드 바에 OAuth 동의 화면을 클릭해서 내부와 외부 두 가지 선택지가 있을 텐데 외부를 선택해주고 만들기를 눌러주자. 바로 위에 사용자 인증 정보를 클릭해서 + 사용자 인증 정보 만들기를 눌러주면 아래처럼 OAuth 클라이언트 ID가 나올 것이다. 노란색 부분을 클릭해서 클라이언트 ID를 만들자. 애플리케이션 유형은 웹 애플리케이션으로 설정해주고 이름도 아무거나 상관없으니 식별하기 쉬운 이름으로 설정하자. 그리고 아래로 쭉 내려가면 승인된 리디렉션 URI를 만들어주자. 작성하고 만들기 버튼을 클릭하면 클라..

    [Spring Boot + Spring Security + jwt] 환경 설정

    [Spring Boot + Spring Security + jwt] 환경 설정

    최근에 토큰에 대해 공부하면서 토큰 기반 인증을 구현해보고 싶다는 생각이 들어 여러 가지를 찾아보다가 Spring Security에 대해 알게 되었다. 그래서 Security를 적용해보려고 며칠을 고생해봤지만 혼자서 쉽지 않았다..... 그러다가 인프런에서 강의를 하나 알게 되었고 그 강의의 내용을 포스팅하려고 한다! [무료] 스프링부트 시큐리티 & JWT 강의 - 인프런 | 강의 스프링부트 시큐리티에 대한 개념이 잡힙니다., - 강의 소개 | 인프런... www.inflearn.com Version IDE : Intellij 2021.3.3 Ultimate Framework : Spring Boot 2.6.8 Java Version : Java 11 Build Tool: Gradle DBMS : Ora..

    Proxy란 ?

    Proxy란 ?

    이전에 캐시(Cache)에 대해 다루면서 프록시에 대해 간단하게 언급하고 지나간 적이 있는데 오늘은 그 프록시에 대해 좀 더 알아보려고 한다. Proxy란 ? 위 사진을 보면 알 수 있듯이 Proxy는 '대신'이라는 의미를 가지고 있다. 보안상의 이유로 직접 정보를 주고 받을 수 없는 관계에서 Proxy를 이용하여 중계하는 개념이라고 볼 수 있다. 그래서 서버와 클라이언트 사이에서 중계 기능을 하는 서버를 '프록시 서버'라고 한다. Proxy 서버의 종류 프록시 서버는 두 가지로 종류로 나눌 수 있다. Forward Proxy Reverse Proxy 1) Forward Proxy 일반적으로 프록시 서버라고 하면 Forward Proxy를 일컫는다. 클라이언트가 요청을 할 때, 서버에 직접하는 게 아닌 ..

    [Java] static 키워드에 대해 알아보자 !

    Java는 어떻게 동작하지?( + 메모리 영역) Java란? Java는 프로그램을 만드는 프로그래밍 언어 중 하나이자 대표적인 객체지향 언어이다. 운영체제와 상관없이 JVM(Java Virtual Machine)만 있으면 코드를 실행할 수 있다. 가비지 컬렉션이 존재하 gwamssoju.tistory.com 우리가 코드를 짜면서 사용하는 static에 대해 알아보려고 한다. 먼저 메모리 구조에 대해 아는 것이 static을 이해하는 데 도움이 될 것이다. 그러니 메모리 구조를 간략하게 설명하고서 static에 대해 알아보도록 하자! static의 의미 자바의 메모리 구조에는 Method Area와 Heap Area(그밖에 더 있음)가 존재한다. 각각의 역할을 아래와 같다. 우리가 만든 클래스는 Metho..

    JWT(Json Web Token)란?

    JWT(Json Web Token)란?

    토큰이란 ? (토큰 기반 인증 VS 서버 기반 인증) 구글 로그인 API를 구현해보려고 여러 블로그에서 정보를 찾다가 "토큰"이라는 말이 눈에 밟혔다. 생각해보니 이전에 세션과 쿠키에 대해 정리한 적은 있는데 토큰은 처음 듣는 말이었다. 그래서 gwamssoju.tistory.com 이전 포스팅에서 서버 기반 인증과 토큰 기반 인증에 대해 알아보았다. 그래서 이번 포스팅에서는 토큰 기반 인증에 쓰이는 JWT에 대해 알아보려고 한다 ! JWT란 ? 인증에 필요한 정보를 암호화시킨 토큰을 의미한다. 요청할 때, JWT를 HTTP 헤더에 포함시켜서 서버가 클라이언트를 식별하는 방식이다. JWT는 언제 사용할까? 권한 부여 : 사용자가 로그인하면 각 후속 요청에 JWT가 포함되어 해당 토큰으로 허용되는 서비스,..

    토큰이란 ? (토큰 기반 인증 VS 서버 기반 인증)

    구글 로그인 API를 구현해보려고 여러 블로그에서 정보를 찾다가 "토큰"이라는 말이 눈에 밟혔다. 생각해보니 이전에 세션과 쿠키에 대해 정리한 적은 있는데 토큰은 처음 듣는 말이었다. 그래서 토큰에 대해 알아보다가 사용자를 인증하는 방법 중에 하나라는 것을 알게 되었고, 그런데 세션을 사용하는 방법이 아닌 토큰을 사용하는 방법을 알게 되니까 우물 안의 개구리임을 다시 한번 실감했다. 그래도 이렇게 하나씩 알아간다는 것이 중요한 거 같다. 각설하고 바로 본론으로 들어가 보자! 1. 서버 기반 인증 기존의 서버 기반 인증은 서버 측에서 사용자들의 정보를 기억하고 있어야 한다. 사용자들의 정보를 기억하기 위해서는 세션을 유지해야 하는데, 이는 메모리, 디스크, 데이터 베이스 등을 통해 관리한다. 클라이언트의 ..

    [Java] 오버로딩 VS 오버라이딩

    자바를 처음 접했을 때, 오버로딩과 오버라이딩을 구분하기가 매우 힘들었다. 그래서 혹시 필자와 같은 어려움을 가진 분들에게 조금이나마 도움이 됐으면 하는 마음으로 포스팅을 진행했다. 오버로딩(Overloading) 오버 로딩은 같은 메서드지만 매개 변수만 다르게 한다면 얼마든지 다른 기능을 하도록 할 수 있다. 조건 메소드의 이름은 같아야 한다. 매개 변수의 개수가 달라야한다. 만약 매개 변수의 개수가 같다면 데이터 타입이 달라야한다. 리턴형은 같아도 되고 달라도 된다. 오버로딩의 예를 예제를 보면 '아 ~ 이거구나'할 것이다. 예제 public class OverloadingEx { public static void main(String[] args) { Practice practice = new Pr..