본문 바로가기

Tech/Spring

[Spring] Spring Data JPA OSIV와 지연 로딩 개요 Todo 어플리케이션에서 마감 시간 1시간 전인 Todo에 대해 사용자에게 알림을 발송하는 기능을 구현 했습니다. 매 분 0초 마다 스케줄러가 데이터베이스에서 1시간 뒤 종료되는 Todo를 조회하도록 했고, 반환된 Todo의 사용자에게 SSE 알림을 발송하도록 했습니다.   그런데 Controller에서 응답을 위해 Todo 엔티티를 DTO로 변환하는 과정에서 문제가 발생했습니다. 문제 발생 원인은 다음과 같습니다. OSIV 설정을 false로 지정했다.Todo에서 User 매핑을 설정할 때 fetchType.LAZY를 적용했다.@Transactional 범위를 넘어가는 Controller에서 Todo가 참조하는 User Proxy 객체에 접근 하니 LazyInitializationException.. 더보기
스프링 싱글톤 컨테이너의 의존관계 주입과 빈 생명주기 🚩목차 스프링 컨테이너와 스프링 빈스프링 컨테이너란 스프링 컨테이너란 스프링 빈(객체)을 싱글톤 패턴으로 생성하고 관리하는 저장 공간입니다. 객체를 싱글톤 패턴으로 관리한다는 말은 스프링 애플리케이션 내에서 해당 클래스 인스턴스를 단 하나만 생성해서 여러 컴포넌트에서 재활용 한다는 의미입니다. 스프링 컨테이너는 BeanFactory 인터페이스를 의미합니다. getBean()으로 저장소에 등록된 빈을 가져오거나, getType()으로 빈 타입을 확인하는 등 다양한 메소드를 제공합니다. 현대에는 BeanFactory를 구현해 다양한 기능을 추가 탑재한 ApplicationContext 인터페이스를 스프링 컨테이너로 주로 사용합니다. 빈 수동 등록 ApplicationContext는 저장소에 등록할 스프링 빈.. 더보기
Springboot 프로젝트에서 Jasypt 암호화로 yml 설정 파일 프로퍼티 관리하기 🚩목차개요 스프링부트 프로젝트 내 application.yml application.properties 등 프로젝트 설정 파일을 관리하다 보면, 외부에 노출되어서는 안되는 값들이 생기기 마련입니다. 설정 파일 프로퍼티를 노출하지 않는 방법은 다양하지만 이번 포스팅에서는 Jasypt 암호화를 다루고자 합니다. Jasypt 라이브러리Jasypt 란? Jasypt는 Java Simplified Encryption의 약자로, 암호화 지식 없이도 자바 애플리케이션에 암호화 기능을 쉽게 추가할 수 있도록 도와주는 라이브러리입니다. dependency를 추가하고 Configuration 클래스만 작성하면 간단히 사용할 수 있습니다. Jasypt 적용하기1. dependencyhttps://mvnrepository... 더보기
서블릿과 서블릿 컨테이너란 무엇이고 어떻게 동작할까? - 전통적인 웹 앱 부터 Spring MVC까지 (1) 개요 자바 스프링 웹 백엔드 개발자를 희망하는 사람이라면, 스프링 웹 프레임워크(Spring MVC)가 서블릿 기반으로 동작한다고 한 번쯤은 들어봤을 것이다. 그런데 서블릿이 뭘까? 스프링 MVC가 내장하고 있다는 톰캣 웹 서버는 또 무엇일까? 이번 시리즈에서는 다음과 같은 궁금증을 풀어보려 한다. 서블릿과 서블릿 컨테이너는 무엇일까? 왜 사용될까? (📍현재 포스팅) Spring MVC에서 서블릿 컨테이너의 동작 방식은 어떠할까? (🔗보러가기) 서블릿 컨테이너와 스프링 컨테이너의 차이점은 무엇일까? (🔗보러가기) 서블릿과 서블릿 컨테이너 우선, 전통적인 웹 애플리케이션에서의 서블릿과 서블릿 컨테이너에 대해 알아보도록 하자. (스프링 MVC 스펙 말고!) What Servlet은 자바 웹 애플리케이션에서 .. 더보기
Spring Security 인터페이스를 활용한 Rest API 로그인 인증 구현 개요 이번 교내 팀 프로젝트에서 Spring Security를 확실하게 짚고 가고자 회원관리를 담당했습니다. Spring Sedurity를 활용해 기본 제공 FORM 로그인이 아닌 REST API로 로그인 인증을 구현했습니다. 이 포스팅을 통해 Security의 인증 핵심 인터페이스를 어떻게 구현했는지 복기하려 합니다. Spring Security 인증 절차 & 핵심 인터페이스 포스팅을 함께 보시는 것을 추천 드립니다. Spring Security 인증 핵심 인터페이스인증 처리의 핵심 인터페이스 다섯 가지를 소개합니다.AbstractAuthenticationProcessingFilter: 인증 처리의 시작점AuthenticationProvider: 실질적인 인증 처리를 담당Authentic.. 더보기
Spring Security 인증 절차 & 핵심 인터페이스 개요 이 포스팅을 통해 스프링 시큐리티 인증 처리의 핵심 인터페이스와 메서드들을 살펴보고, 메서드 호출 순서를 따라가면서 인증 처리의 동작 순서를 살펴보고자 합니다. 각 인터페이스의 핵심 메서드와 수행 로직을 표로 추출해 보았습니다. Spring Security 기본 제공 로그인 흐름AbstractAuthenticationProcessingFilter의 attemptAuthentication 메서드가 호출된다.폼에 입력된 username과 password를 각각 UsernamePasswordAuthenticationToken의 principal과 credential에 담아 생성한다. (인증처리 전의 토큰이라고 하겠다.)AuthenticationManager의 authenticate 메서드를.. 더보기