[Spring Security] DelegatingFilterProxy의 동작과정 포스팅 썸네일 이미지

백엔드/Spring Security

[Spring Security] DelegatingFilterProxy의 동작과정

목적 스프링 시큐리티의 DelegatingFilterProxy가 어떻게 스프링 필터체인과 함께 동작할 수 있는지 이해하기 위함 목차 스프링 필터의 동작과정 DelegatingFilterProxy의 동작과정 1. 스프링 필터의 동작과정 간단히 설명해서 ApplicationFilterChain이 갖고 있는 filter목록을 순회하며 filter를 순회하게 된다. 자세한건 이전 글을 참조하면 되겠다. 2. DelegatingFilterProxy의 동작과정 DelegatingFilterProxyBean을 필터로 등록하여 스프링 시큐리티에 등록된 필터를 호출하는 방식이다. 그림상으론 필터 실행 후 다음 필터가 실행되는 것처럼 나와있는데 실제론 해당 필터가 실행하고자 하는 로직이 끝나면 doFilter메서드 또는 ..

2021.06.12 게시됨

[Spring] 스프링 필터의 동작과정 포스팅 썸네일 이미지

백엔드/Spring

[Spring] 스프링 필터의 동작과정

목적 스프링 필터의 동작과정을 이해하기 위함 목차 필터의 동작과정 1. 필터의 동작과정 1. Application의 doFilter() 서버로 요청이 들어오면 StandardWrapperValve 클래스의 invoke메서드가 실행된다. 이 메서드는 FilterChain의 구현체인 ApplicationFilterChain을 가져와서 doFilter메서드를 실행한다. FilterChain인터페이스는 Filter인터페이스와 마찬가지로 doFilter메서드가 존재하긴 하지만 필터가 아닌 필터체인 체인이기때문에 Filter인터페이스와는 달리 init과 destroy메서드는 제공하지 않는다. 2. doInternalFilter() ApplicationFilterChain의 doFilter메서드는 내부에서 inter..

2021.06.11 게시됨

[Java] Objects.requireNonNull과 Optional 포스팅 썸네일 이미지

백엔드/Java

[Java] Objects.requireNonNull과 Optional

목적 Objects.requireNonNull과 Optional의 동작이 유사한 것 같아, 정확하게 무엇이 어떻게 다른지 파악하기 위함 목차 Objects.requireNonNull이란? Optional이란? Objects.requireNonNull과 Optional의 차이점 1. Objects.requireNonNull이란? Checks that the specified object reference is notnulland throws a customized[NullPointerException] if it is. This method is designed primarily for doing parameter validation in methods and constructors with multipl..

2021.06.09 게시됨

[웹 개발자를 위한 대규모 서비스를 지탱하는 기술] 포스팅 썸네일 이미지

독서

[웹 개발자를 위한 대규모 서비스를 지탱하는 기술]

목적 실제 대규모 서비스를 제공하고 있는 기업에서는 어떤 기술을 사용하는지에 대한 궁금증을 풀고자 함 목차 독서 계기 내용 정리 후기 1. 독서 계기 이 책은 말 그대로 대규모 서비스를 운영하기 위해서는 어떠한 기술이 쓰이는지, 현재 내가 가진 지식이 정말 대규모 서비스를 운영하는데 도움이 될 수 있는지 여부가 궁금했다. 또한 책을 읽고서 나의 부족한 부분을 채워나가고 싶었다. 2. 내용정리 소규모 서비스로 시작한 하테나가 대규모 서비스를 운영하기 위해 시행착오를 겪은 노하우를 적어두었다. 주로 확장성, 다중화, 효율향상에 중점을 두었다. 메모리와 디스크 대규모 데이터의 어려움은 메모리 내에서 계산할 수 없다는 점이다. 메모리 내에서 계산할 수 없게 되면 디스크에 있는 데이터를 검색할 필요가 있다. 하지..

2021.05.23 게시됨

[Spring] OncePerRequestFilter란? 포스팅 썸네일 이미지

백엔드/Spring

[Spring] OncePerRequestFilter란?

목적 OncePerRequestFilter를 이해하고 목적에 맞게 사용하기 위함 목차 학습 이유 OncePerRequestFilter 1. 학습이유 얼마전 Spring Security를 공부하면서 JWT필터를 구현했었다. 나는 GenericFilterBean을 상속받은 AbstractAuthenticationProcessingFilter을 상속받아 코드를 작성했지만 다른 사람들은 대부분 OncePerRequestFilter를 상속받아 구현하였다. 무슨 차이일까 궁금했다. 2. OncePerRequestFilter 우선 문서상에는 이렇게 쓰여있다. Filter base class that aims to guarantee a single execution per request dispatch, on any ..

2021.05.10 게시됨

[Spring Security] 커스텀 필터 생성 시 'authenticationmanager must be specified' 포스팅 썸네일 이미지

백엔드/Spring Security

[Spring Security] 커스텀 필터 생성 시 'authenticationmanager must be specified'

목적 스프링 시큐리티의 커스텀 필터에서 authenticationManager를 주입하는 방법을 익히기 위함 목차 authenticationManager란? 'authenticationmanager must be specified' 발생 이유 'authenticationmanager must be specified' 해결 방법 1. authenticationManager란? authenticationManager는 authenticate라는 인증 메소드를 제공하는 인터페이스이다. Spring Security 동작원리 참조 ProviderManager가 authenticationManager를 구현하여 Provider를 돌면서 각 Provider의 인증 메소드를 실행하여 인증을 시도한다. 즉, 인증을 시도..

2021.05.02 게시됨

[JPA] N+1 문제 포스팅 썸네일 이미지

백엔드/JPA

[JPA] N+1 문제

목적 의도하지 않는 쿼리문이 실행되는 것을 막아 불필요한 네트워크 통신 비용을 줄이기 위함 목차 JPA의 N+1이란? JPA의 기본적인 로딩 방식 JPA에서 Lazy로딩의 문제점 JPA의 N+1의 해결 방법 1. JPA의 N+1이란? 1번의 쿼리를 날렸을 때 의도하지 않은 N번의 쿼리가 추가적으로 실행되는 것을 의미한다. 이는 불필요한 네트워크 비용을 증가시킨다. 2. JPA의 기본적인 로딩 방식 JPA는 @ManyToMany, @OneToMany를 사용하는 필드에는 지연로딩을 적용한다. 지연로딩이란? 가능한 한 객체의 초기화를 지연시키는데 사용되는 디자인 패턴이다. 데이터가 불필요한 시점이 아닌 꼭 필요한 시점에 초기화를 시킬 수 있어 시간소비와 메모리 사용량을 줄일 수 있다. 그래서 JPA는 @**T..

2021.05.01 게시됨

[디자인 패턴] 디자인 패턴 정리 포스팅 썸네일 이미지

디자인패턴

[디자인 패턴] 디자인 패턴 정리

목적 좀 더 나은 코드를 위해 어떤 패턴을 써야 유용할 지 한눈에 보고 판단하기 위함 목차 디자인 패턴이란? 생성패턴 구조패턴 행위패턴 디자인 패턴 비교 1. 디자인 패턴이란? 프로그램 설계 시 자주 발생하는 문제들을 해결 할 수 있는 프로그램 설계 방법 생성패턴 : 객체의 생성과 관련된 패턴 구조패턴 : 객체를 조합하여 더 큰 구조를 만드는 패턴 행위패턴 : 객체 사이의 알고리즘이나 책임 분배에 관련된 패턴 2. 생성패턴 프로토타입 기존에 생성된 객체를 복제해서 새로운 객체를 생성하는 패턴 기본은 얕은복사 Cloneable의 clone메소드를 오버라이딩하여 사용 팩토리 메서드 객체의 생성을 서브클래스로 분리하여 처리하는 패턴 팩토리 클래스를 만들어 클라이언트의 요구에 따른 객체를 반환 추상 팩토리 연관..

2021.05.01 게시됨