Spring
2차 캐시를 이용한 최적화 기록
개인 프로젝트에 2차 캐시를 적용하면서 데이터 최적화를 시도한 기록을 기록합니다. 🔍 자바의 표준 캐시 (JCache) JCache는 자바 애플리케이션을 위한 표준화된 캐싱과 매커니즘을 제공합니다. 캐싱 표준으로 설계되었기 때문에, 벤더 중립적입니다. 즉, JCache API를 사용하여 애플리케이션을 개발하면 다른 캐시 API로의 전환이 용이합니다. JCache는 다음과 같은 표준 인터페이스를 제공하고 공급자를 제공받음으로써 벤더 중립적인 개발을 가능하게 도와줍니다. CacheManager - 캐시 설정, 구성 및 종료를 담당하는 인터페이스 CachingProvider CacheManager의 생명 주기를 생성하고 관리하는 인터페이스 대표적인 공급자로 Ehcache, Hazelcast, Caffeine,..
[Spring Security] 스프링 시큐리티의 아키텍쳐
Authentication and Access Control 애플리케이션에서 보안은 인증과 권한의 두 가지 문제로 요약된다. 스프링 시큐리티는 인증과 권한을 분리하도록 설계되어있으며, 두 가지 모두 각각의 전략과 확장 지점들을 가지고 있다. Authentication Authentication의 주요 인터페이스는 AuthenticationManager이며, 이는 딱 한 개의 메소드를 가지고 있다. public interface AuthenticationManager { Authentication authenticate(Authentication authentication) throws AuthenticationException; } 이 메소드가 하는 일은 다음 3가지이다. 입력이 유요한 주체인 경우 Au..
[Spring] BindingResult를 이용한 검증
[도입] 컨트롤러의 역할 중 하나는 HTTP 요청이 정상인지 검증하는 것이다. 이 때 검증은 클라이언트와 서버단에서 모두 이루어 지는게 좋다. 그 이유는 다음과 같다. 클라이언트 검증은 조작할 수 있으므로 보완에 취약하다. -> 데이터를 조작해서 서버로 보낼 수 있다. 서버만으로 검증하면, 즉각적인 고객 사용성이 부족해진다. 따라서 둘을 적절히 섞어서 사용하되, 최종적으로 서버 검증은 필수적이다. Spring에서는 서버단에서 검증을 할 때 에러를 확인하고 이를 view로 쉽게 전달하기 위해서 BindingResult객체를 제공한다. [BindingResult] 보통 errors 메세지를 담고 활용하기 위해 HashMap을 이용하는데, 스프링은 이를 더 쉽게 처리하기 위해 BindingResult객체를 제..
[Spring] 요청 파라미터
HttpServeltRequest의 request.getParameter()를 사용하면 두 가지 요청 파라미터를 조회할 수 있다. GET 쿼리 파라미터, POST HTML Form 전송 방식이든 둘다 형식이 같으므로 구분없이 조회할 수 있다. RequestParam @ResponseBody @RequestMapping("/request-param") public String requestParam( @RequestParam("username") String memberName, @RequestParam("age") int memberAge return "ok"; } 1. RequestParam의 이름와 변수명이 같으면 생략할 수 있다. @ResponseBody @RequestMapping("/reques..
[Spring] 리다이렉트 동작 원리
폼 형식의 문서를 작성 후에 서버로 보낸다고 가정해보자 (HTTP Form Post 방식). 폼 형식의 데이터를 서버에서 받으면 곧바로 다른 페이지로 리다이렉트 한다. 이 때 새로운 HTTP GET 요청을 시작하는 것이기 때문에 수행된 모델 데이터는 모두 소멸된다. 그렇다면 어떻게 리다이렉트를 할 때 데이터를 전달할 수 있을까? GET의 파라미터 형식으로 정보를 전달한다는 특징을 이용하면 된다. GET/servlet/helloServlet?userId=hello 하지만 중요한 정보가 URL에 그대로 노출된다는 문제점이 있고, 스프링은 이를 해결하기 위해 RedirectAttirbutes 클래스를 제공한다. RedirectAttribute는 리다이렉트가 발생하기 전에 모든 없어질만한 속성을 세션에 복사한다..