Spring
-
Spring cache redisProgramming/Spring boot 2021. 8. 31. 17:13
cache란? 데이터나 값을 미리 복사해 놓는 임시 저장소를 가리킨다. 이러한 cache는 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용한다. cache에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근 가능하다. 정리하면 디스크에 접근하여 정보를 얻어오는 것 보다 빠른 속도로 데이터 조회가 가능하다. 하지만 인메모리로 설정할 경우 휘발성이기 때문에 서버가 다운되면 데이터는 사라질 수 있다. 즉 영구적으로 보관하기 위한 용도가 아니다. 그래서 이걸 왜? 만약 메인 페이지에 랭킹과 관련된 데이터를 매번 조회한다고 가정하면 해당 웹 서비스에 접속할 때 마다 랭킹 정보들을 데이터베이스에서 조회할 것이..
-
[Spring Security] Spring Security + JWTProgramming/Spring Sercurity 2021. 7. 31. 21:04
Spring Security + JWT Spring boot + Security + JWT를 활용하여 회원가입/로그인 로직 및 권한 체크 기능을 구현하였다. 추가적인 기능은 구현하지 않고 오로지 user 도메인을 활용하여 회원가입과 로그인, 토큰 발급을 진행한다. [무료] Spring Boot JWT Tutorial - 인프런 | 강의 Spring Boot, Spring Security, JWT를 이용한 튜토리얼을 통해 인증과 인가에 대한 기초 지식을 쉽고 빠르게 학습할 수 있습니다., [사진] 본 강의는 Spring Boot, Spring Security를 이용해서 JWT 인증과 인가를 쉽 www.inflearn.com 전반적인 로직과 코드는 위 강의를 참고하였고, 필요에 따라 수정하여 재반영 하였다...
-
[Spring Security] Spring Security 간단 정리Programming/Spring Sercurity 2021. 7. 27. 15:11
Spring Security Spring 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크. Spring Security는 '인증'과 '권한'에 대한 부분을 Filter의 흐름에 따라 처리한다. Filter이기 때문에 Dispatcher Servclet으로 가기 전에 적용 된다. 이러한 Spring Security는 보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자 입장에서 보안과 관련된 로직을 일일이 작성하지 않아도 된다는 장점이 있다. 인증(Authorization)과 인가(Authentication) 인증 Authentication: 해당 사용자가 본인이 맞는지를 확인하는 절차 인가 Authorization: 인증된 사용자가 요청한 자원에 접근 가능..
-
[JPA] n + 1 문제와 inner join, outer joinProgramming/JPA 2021. 5. 10. 21:56
개요 프로젝트를 진행하던 도중 말로만 듣던 n + 1 문제와 마주하게 되었다. 이에 대한 해결방안으로 공부한 것은 fetch join과 Spring Data JPA 사용 시 @EntityGraph 애노테이션을 활용하는 방법이다. 하지만 두 가지 방법에는 아주 큰 차이가 있었다. 그 둘의 차이점을 알아보기 위해 예시를 작성하였다. 프로젝트 구조 Person.java package me.hyeonic.join.domain; import lombok.AccessLevel; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.ToString; import javax.persistence.Entity;..
-
[SpringMVC] 인터셉터(interceptor) 적용 - sessionProgramming/Spring MVC 2021. 4. 22. 19:36
개요 프로젝트를 진행하던 중 개발 중인 가입된 유저만 접근이 가능하도록 제한하기 위한 접근 권한이 필요하였다. Spring에서는 Spring Security와 같이 애플리케이션의 보안을 담당하는 하위 프레임워크가 존재한다. 하지만 워낙 양과 자료가 방대하여 배울 내용이 많았기 때문에 적용하는데 어려움이 많았다. 그렇기 때문에 다른 차선책을 찾아야만 했다. 관련 키워드를 검색하던 중 Spring interceptor에 대하여 알게되었다. interceptor는 말 그대로 무언가를 가로채는 역할을 한다. Interceptor 흐름도 interceptor는 위와 같은 흐름으로 Controller(Handler) 로 가기전에 요청을 가로채는 preHandle, controller 처리 후 postHandle, ..
-
[SpringMVC] SpringMVC 구조Programming/Spring MVC 2021. 3. 18. 23:27
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의 웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., 원 www.inflearn.com 이 게시글은 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 강의를 듣고 느낀점과 배운 것들을 다시 한 번 각색하여 정리한 것입니다. SpringMVC의 구조 동작순서 1. 핸들러 매핑을 통해 요청한 URL에 매핑된 핸들러(컨트롤러)를 조회한다. 스프링 부트에서는 가장 먼저 @RequestMapping을 활용한 애노테이션 기반의 컨트롤러를 찾아서 사용한다. @Controller는 @Component의 기능 뿐만 ..
-
[Spring] Singleton ContainerProgramming/Java 2021. 1. 8. 21:42
Singleton Pattern에 문제점 1. 싱글톤 패턴 구현을 위한 부가적인 코드가 많이 들어간다. 예를 들면 static final intance, private 생성자 등 2. 의존관계에 있어서 클라이언트가 구체 클래스 자체에 의존하게 된다. DIP(의존 관계 역전의 원칙)를 위반하게 된다. 클라이언트가 구체 클래스에 의존하기 때문에 OCP(개방-폐쇄 원칙) 또한 위반할 가능성이 높다. 3. 테스트 작성이 어렵다. 4. 내부 속성을 변경하거나 초기화하기 어렵다. 5. private 생성자이기 때문에 자식 클래스를 만들기 어렵다. 유연성 또한 떨어진다. Spring에서 사용하는 Spring container는 singleton pattern에 문제점을 해결하고 객체 인스턴스를 singleton으로 ..
-
Spring 간단 정리Programming/Java 2020. 12. 23. 11:38
Spring Spring의 역사 Spring의 아버지 로드 존슨은 객체지향의 이점을 잃어버리는 EJB의 문제점을 지적했다. EJB없이 품질이 좋은 확장 가능한 애플리케이션 개발을 위해서 Spring의 핵심 개념을 제작하였다. 핵심 개념에는 BeanFactory, ApplicationContext, POJO, 제어의 역전 (IoC, Inversion of Control), 의존 관계 주입 (DI, Dependency Injection) 등이 있다. Spring이라는 이름은 EJB라는 겨울을 넘어 새로운 시작인 봄을 의미한다. Spring Projects Spring은 모든 프로젝트가 모듈식으로 설계되어 있기 때문에 필요한 것들만 모아서 원하는 애플리케이션을 구성할 수 있다. 그 중심에는 Spring 프레임..