본문 바로가기

WEB

(12)
JWT(Json Web Token)의 구조 JWT는 String 타입의 사용자를 식별하는 토큰 xxxxx.yyyyyy.zzzz... 위와 같이 점(.)으로 구분된 3개의 문자열이 합쳐진 하나의 문자열 형태임. 3개의 문자열은 각각 Header Payload Signature Header 토큰의 타입과 해시 암호화 알고리즘을 포함하고 있음 Payload 토큰의 정보인 Claim을 기술하고 있음. Claim에 대한 자세한 설명은 아래애... Signature 시크릿 키(Secret Key)를 포함하여 암호화한다. 토큰의 정보(Header, Payload)가 신뢰할 수 있는 정보인지를 판단할때 사용 Claim이란? 토큰의 정보로 3가지로 분류됨 Registered Claim Public Claim Private Claim Registered Claim..
[WEB] 빈 스코프 1 - 프로토타입 스코프 (Prototype Scope) 기본적으로 스프링 빈은 싱글톤 스코프(Singleton Scope)이다. 싱글톤 스코프의 빈은 스프링 컨테이너가 시작할때 생성되어 스프링 컨테이너가 종료될때까지 유지된다. 하지만 상황에 따라 더 다양한 생명주기를 가지는 스코프가 필요하다. 앞으로 두 편의 포스팅에서는 스프링이 제공하는 다양한 스코프들에 대해 알아보고자 한다. 1편에서는 프로토타입 스코프(Prototype Scope)에 대해 알아보자. 이 포스팅은 김영한님의 '스프링 핵심 원리 - 기본편'에 의존하고 있습니다. 빈 스코프(Bean Scope) 스프링이 제공하는 빈 스코프는 크게 다음과 같다. 싱글톤 스코프 : 디폴트로 설정되는 스코프로 스프링 컨테이너와 생명주기를 함께 한다. 가장 넓은 범위의 스코프를 가지고 있다. 프로토타입 스코프 : ..
[WEB] 빈 생명주기 콜백 실무 개발을 하다보면 DBCP(데이터베이스 커넥션 풀)를 생성하거나, 소켓을 초기화 하는 등 에플리케이션의 시작 시점에 작업을 미리해두고, 마찬가지로 종료 시점에 해당 연결을 끊는 작업을 하는 경우가 많다. 이번 포스팅에서는 스프링이 어떤 방식으로 어플리케이션의 시작 시점과 종료 시점에 작업들을 처리하는 지에 대해 알아보자. 이 포스팅은 김영한님의 '스프링 핵심 원리 - 기본편' 강의에 의존하고 있습니다. 빈 생명주기와 콜백 메서드 public class NetworkClient { private String url; public void setUrl(String url) { this.url = url; } public NetworkClient() { System.out.println("create Cl..
[WEB] 스프링 의존관계 자동 주입 앞선 포스팅에서 컴포넌트 스캔을 통해 의존관계를 자동으로 주입하는 법에 대해 알아보았다. https://ohreallystore.tistory.com/43 [WEB] 스프링 컴포넌트 스캔 이전까지는 스프링 빈을 등록하기 위해서는 @Bean 애노테이션을 통해 직접 작성해야 했다. @Bean public Bean bean() { return new Bean(); } 등록할 스프링 빈의 개수가 많지 않다면 상관이 없겠지만, 스프링 ohreallystore.tistory.com 이번 포스팅에서는 다양한 의존관계 주입 방법에 대해 알아보고, 어떻게, 또 어떤 의존관계 주입 방식을 사용해야 하는지에 대해 알아보자. 이 포스팅은 김영한님의 '스프링 핵심강의 - 기본편' 강의에 의존하고 있습니다. 다양한 의존관계 주입..
[WEB] 스프링 컴포넌트 스캔 이전까지는 스프링 빈을 등록하기 위해서는 @Bean 애노테이션을 통해 직접 작성해야 했다. @Bean public Bean bean() { return new Bean(); } 등록할 스프링 빈의 개수가 많지 않다면 상관이 없겠지만, 스프링 빈이 수십개 수백개라면 모두 직접 작성하여 등록하기에는 매우 비효율적이다. (단순 반복 작업이기 때문에 매우 귀찮다...) 이를 해결하기 위해 스프링 프레임워크는 직접 코드를 작성하지 않아도 스프링 빈을 등록해주는 컴포넌트 스캔 기능을 제공한다. 또한 빈 등록시 필요한 의존관계 주입도 자동으로 해주는 기능을 제공한다. 이번 포스팅에서는 컴포넌트 스캔과 의존관계 자동 주입에 대해 자세히 알아보자. 이 포스팅은 김영한님의 '스프링 핵심 원리 - 기본편' 강의에 의존하고 ..
[WEB] 스프링 컨테이너와 싱글톤 패턴 보통의 웹 어플리케이션은 수많은 클라이언트의 요청들과 그에 따른 서버의 응답들로 구성되어 있다. 그런데 이때, 여러 클라이언트들이 같은 컨테이어를 요청하면 어떻게 될까? 그때 마다 새로운 컨테이너를 생성해서 클라이언트의 요청에 응답을 해야할까? 이번 포스팅에서는 스프링 컨테이너가 어떻게 이러한 상황을 어떻게 처리하는지에 대해서 알아보자. 이 포스팅은 김영한님의 '스프링 핵심 원리 - 기본편'강의에 의존하고 있습니다. 싱글톤 (Singleton) 패턴 클라이언트가 요청이 올때마다, 객체를 생성하는 것은 공간적으로 매우 낭비이다. 하나의 객체만을 유지하며, 그 객체를 여러 클라이언트가 공유해서 사용하는 것이 훨씬 좋은 방법일 것이다. 이것을 가능하게 하는 것이 바로 싱글톤이다. 싱글 톤 패턴은 객체가 프로그..
[WEB] 스프링 컨테이너 (Spring Container) 이전 포스팅에서 관심사 분리를 설명하면서, 스프링 컨테이너에 대한 언급을 한적이 있다. 오늘 포스팅에서는 스프링 컨테이너에 대해 조금 더 자세히 이야기 하고자 한다. https://ohreallystore.tistory.com/40 220417 [번외] : 객체 생성을 자동화해야하는 이유 (feat. 관심사분리) 기존의 프런트 컨트롤러에서 생성하던 페이지 컨트롤러와 DAO 객체의 생성을 ApplicationContext로 위임하여 프로그램을 실행시키면 객체가 자동으로 생성되게끔 프로그래밍하였다. 해당 과정에 대 ohreallystore.tistory.com 관련 내용은 해당 피드 참고 참고: 앞으로 계속 언급될 빈(Bean, 또는 스프링 빈)이란, 스프링이 관리하는 자바 객체를 뜻한다. 스프링 컨테이너 ..
[WEB] ClassNotFoundException: com.mysql.cj.jdbc.Driver 개요 서블릿 프로그래밍과 MVC 모델에 대한 공부를 마치고, 간단한 CRUD 게시판을 만들어보기로 하였다. 기존의 경우, 사용하는 책이 이클립스를 사용하여 이클립스에서 진행하였으나, 하려고 하는 프로젝트가 워크스페이스 기반일 필요도 없고, 실제 프로그래밍 생산성에 있어서도 intellij가 압도적이기 때문에(개인적인 생각입니다^^) intellij에서 하기로 결정. 그래서 시작 전 간단하게 db 연동 테스트를 하는데 문제가 발생하고 말았다.... 대단한 에러는 아니다만 처음 intelliJ 쓰는 분들중에 나랑 비슷한 문제를 겪는 분들이 있을까 싶어서 써봅니다^^ ClassNotFoundException: com.mysql.cj.jdbc.Driver DB와 연동을 위해서는 jdbc-connector 모듈을..