
JWT 토큰을 io로 생성해보았으니 직접 코드로 생성해보자Service 레이어에서 들어갈 정보를 포함하는 토큰을 생성하는 메소드와 이를 검증할 수 있는 메소드를 작성한다.claims는 여러 데이터가 들어갈 수 있는 Map으로 이전 포스트에서 작성했던 여러 정보가 포함된

Json객체를 사용해 정보를 안전하게 전달할 수 있도록 설계된 토큰 기반 인증 방식이다.Authentication & Authorization을 학습중이며 웹 보안 관련한 중요 표준이 등장했다.JWT는 URL, HTTP Header, HTTP Form과 같은 방식 등으
Authentication 인증은 클라이언트가 "누구"인지 확인하는 과정이다. 기본적으로 ID와 패스워드, 혹은 사용자의 정보를 이용해 인증을 거친다. Authoraization 인가는 그 "누가" 접근하고자 하는 작업의 리소스 혹은 서비스를 제공해도 되는지를 판단한
@PointCut 지시자를 통해서 @PointCut 어노테이션의 Aspect를 적용할 위치를 지정할 수 있다. "PCD"라고 부를 수 있다. >|지시자|기준| |---|---| |execution|리턴타입, 타입, 클래스, 패키지, 메소드, 파라미터 기준| |withi

이전 포스팅에서 CRUD 기능을 추상화해서 재사용 가능한 코드를 생성했다.Reply 테이블의 CRUD를 추상화 코드로 변경해보자.매우 짧아졌다.JpaRepository를 상속받는 Repository처럼 각 Reply의 클래스는 상속받는 추상클래스의 구현체를 자동으로 사
추상화는 객체지향 프로그래밍의 개념으로 기존 클래스의 공통적 요소, 기능을 추출해서 불필요한 부분을 생략하거나 중요한 부분을 중점으로 개략적으로 구성한 것이다.프로그래밍에서는 인터페이스와 추상 클래스를 통해서 객체 행동을 정의하는 것으로 설명할 수 있겠다.추상 클래스는

Aspect Oriented Programming이란 관점(Aspect)에 따라서 기능을 분리하는 프로그래밍 기법이다.OOP(Object Oriented Programming)와 반대되는 개념인 것 같지만, 부족한 면을 보완하기 위해서 만들어졌다.목적과 기능에 따라 클

Filter를 이야기할 때 Request를 핸들링하기 전이라는 말을 했다.interceptor는 핸들링하기 전 요청과 응답을 "낚아챈다"는 의미일 것이다.Controller에서 핸들링하기 전에 데이터를 가공하거나 참조해서 어떤 작업을 하고자할 때 사용한다.스프링에서 제

스프링에서는 Request를 핸들링하기 전 필터링을 거친다.입력 혹은 출력에 대한 예외나 오류를 확인하는 경우로클라이언트가 잘못 입력하거나 서버의 로직이 잘못된 경우와 같은 상황의 로그를 확인하기 위함이다.body를 가져오는 POST 요청이 있다고 해보자.네 가지의 필

사용자가 게시판의 글을 열람하기 위해 게시판을 요청할 때만약 게시글이 10개가 한 페이지에 존재한다면, 한 번에 다 볼 수 있다.만약 게시글이 100만개가 한 페이지에 존재한다면, 한 번에 다는 커녕 페이지 로드 속도가 매우 느릴 수도 있다.매번 요청할 때마다 게시글
Controller에서 Entity를 참조하는 것이 바람직하지 않다는 것을 이전 포스팅에서 말한 바 있다.그래서 DTO를 통해 Converter로만 데이터를 조작할 수 있도록 만들었다.Controller에서 BoardEntity를 내리는게 아니라 BoardDTO를 내리
Recursion Loop 이 전 코드에서는 Entity를 방문하는 과정에서 BoardEntity 클래스의 postList를
End Point 게시판의 CRUD를 위해 End Point를 개발해보자. 클라이언트가 서버와 통신하고자 하는 URL 경로로 해당 포스트에서는 CRUD 기능을 제공하기 위해 응답 요청을 구현하는 것으로 한다. board 테이블에 추가할 것은 게시판 이름 뿐이므로 r

기본적인 게시판을 개발해보자.프로젝트의 개발 프로세스가 정해진 규격은 없지만, 무턱대로 서비스 로직을 작성하지는 않을 것이다.시스템 전체의 설계를 진행하고, 데이터베이스를 설계하는 것이 가장 우선이다.우리는 비회원 게시판을 개발할 예정이고, 기본 레이아웃은 다음과 같다

Quert는 데이터베이스에 특정 정보를 요청하는 것이다.질의라고도 하며 정보를 검색하기 위한 작성문이다.쿼리를 작성하기 위해서는 SQL이라는 언어를 학습해야하고, 생각보다 새로 익히기 쉽지 않은 구조로 이루어져있다.JPA에서는 Query Method를 사용해서 JpaR
Database 파트에서 작성했던 Memory 기반 Database 코드를 JPA 코드로 옮겨보자Spring Data JPA와 mysql connector dependency를 주입해줘야 한다.yaml 파일도 작성해서 데이터베이스와 연동해야한다.기존 코드에서 레포지터리

JDBC(Java DataBase Connectivity)는 Java기반 어플이케이션 데이터베이스 관리를 Java에서 사용할 수 있도록 하는 API이다.JDBC는 많은 DBMS에 사용 가능하도록 Low Level의 인터페이스로 사용할 DBMS의 드라이버와 DB의 URL

CREATE는 말그대로 생성이다.테이블을 생성할 때 사용되는 명령어이다.등의 코드로 입력 가능하다.주의할 것은 테이블과 컬럼, 로우는 작은 따옴표 ( ' )가 아니라 ESC 밑에 있는 그것, ( \` )으로 사용한다.(하지만 DEFAULT나 COMMENT의 문자열은 작
SQL SQL은 'Structured Query Language'로 데이터베이스에서 데이터를 다루는데 사용되는 언어이다. 대부분의 데이터베이스 시스템에서 SQL 언어를 지원한다. 오라클에서 제공하는 OracleDB, MySQL이나 MS에서 제공하는 MSSQL 등 여러
스프링 컨테이너는 객체를 생성하고 관리한다. 애플리케이션에서 불필요하게 길어지는 코드를 줄여주고간단하게 의존성을 주입해주는 역할을 한다.Lombok에서 제공하는 어노테이션으로 final로 선언된 필드나 NonNull이 붙은 필드의 생성자를 생성해준다.전통적인 방법으로