Spring Security 핵심 컴포넌트
·
BackEnd/Spring Framework
이전 글에서 Spring Security의 흐름을 간단하게 알아보았습니다. Spring Security를 사용해 단순해 보이는 로그인 기능 하나 구현하려다 보면 Filter, SecurityContext, Authentication, AuthenticationManager 등 생소한 개념들이 복잡하게 얽혀있는 구조를 마주하게 됩니다. 하지만 이 복잡성에는 분명한 이유가 있습니다. 현대 웹 애플리케이션의 보안 요구사항이 결코 단순하지 않기 때문입니다.웹 보안의 본질적 복잡성두 개의 근본적 질문웹 보안의 복잡성을 이해하려면 모든 보안 시스템이 답해야 하는 두 가지 근본적 질문을 살펴봐야 합니다. "당신은 누구인가?"(Authentication)와 "당신은 무엇을 할 수 있는가?"(Authorization)...
Spring Security 개요
·
BackEnd/Spring Framework
Spring Security는 Java 기반 애플리케이션에서 인증과 권한 부여를 처리하는 강력한 보안 프레임워크입니다. 복잡해 보이는 보안 처리 과정을 체계적으로 관리하여 개발자가 비즈니스 로직에 집중할 수 있도록 도와줍니다.Spring Security가 필요한 이유보안 처리의 복잡성현대 웹 애플리케이션에서 보안은 필수 요소입니다. 사용자 인증부터 권한 관리, 각종 보안 공격 방어까지 고려해야 할 요소들이 매우 많습니다. Spring Security는 이러한 복잡한 보안 요구사항을 체계적으로 해결해주는 포괄적인 보안 프레임워크입니다.가장 큰 장점은 비즈니스 로직과 보안 로직의 완전한 분리입니다. 개발자는 핵심 비즈니스 기능 구현에 집중할 수 있고, 보안은 Spring Security가 투명하게 처리해줍니..
REST API
·
BackEnd/Spring Framework
웹 애플리케이션 개발에서 프론트엔드와 백엔드를 분리하여 개발하는 것이 일반적인 패턴이 되었습니다. 이러한 구조에서 두 영역을 연결하는 핵심적인 역할을 하는 것이 바로 REST API입니다. Spring Framework를 사용하여 REST API를 구축하는 방법을 알아보겠습니다.REST API가 필요한 이유과거에는 하나의 애플리케이션에서 모든 것을 처리하는 모놀리식 구조가 일반적이었습니다. 하지만 현대 웹 개발에서는 다양한 플랫폼과 클라이언트가 동일한 데이터를 필요로 합니다. 멀티 플랫폼과 멀티 디바이스의 시대에 접어들면서 플랫폼 종속적인 개발 방식의 한계가 드러났습니다.이러한 환경에서 REST API는 플랫폼 독립적인 데이터 통신을 가능하게 합니다. 모든 클라이언트가 HTTP 프로토콜을 통해 동일한 방..
Spring의 트랜잭션 관리
·
BackEnd/Spring Framework
Spring Framework에서 제공하는 트랜잭션 관리 기능, 특히 @Transactional 어노테이션에 대해 살펴보겠습니다.서비스 계층의 필요성우선 트랜잭션 관리가 필요한 서비스 계층에 대해 이해해봅시다. 서비스 계층이 중요한 이유는 다음과 같습니다.업무 로직 분리: 비즈니스 로직을 DAO와 분리하여 관심사를 명확히 구분데이터 통합 처리: 여러 DAO의 작업을 하나의 논리적 단위로 묶어 처리데이터 일관성 보장: 트랜잭션을 통해 여러 데이터 변경 작업이 모두 성공하거나 모두 실패하도록 보장코드 재사용성 향상: 공통 비즈니스 로직을 여러 컨트롤러에서 재사용 가능기존의 JDBC 기반 트랜잭션 관리는 다음과 같은 문제가 있었습니다.public int registMember(Member member) thr..
MyBatis의 동적 SQL
·
BackEnd/Spring Framework
MyBatis의 가장 강력한 기능 중 하나인 동적 SQL에 대해 자세히 살펴보겠습니다. 동적 SQL을 사용하면 조건에 따라 다양하게 변하는 쿼리를 효과적으로 작성할 수 있어, 복잡한 검색 기능이나 조건부 데이터 처리에 큰 도움이 됩니다.동적 SQL의 필요성실제 애플리케이션 개발에서는 단순한 CRUD 쿼리만으로는 충분하지 않은 경우가 많습니다. 사용자의 검색 조건에 따라 WHERE 절이 달라지거나, 선택적으로 JOIN이 필요하거나, 테이블 이름이나 정렬 조건이 동적으로 변해야 하는 경우가 자주 있습니다.이런 상황에서 전통적인 방법으로는 문자열 연결이나 조건문을 통해 SQL을 동적으로 구성해야 했습니다. MyBatis에서도 기본적으로 두 가지 방식으로 파라미터를 처리할 수 있습니다.#{}: PreparedS..
Interceptor | ErrorPage | FileUpload
·
BackEnd/Spring Framework
스프링 프레임워크를 사용하면서 웹 애플리케이션 개발 시 자주 마주치게 되는 세 가지 중요한 기능에 대해 알아보겠습니다. 인터셉터, 에러 페이지 처리, 그리고 파일 업로드는 꼭 필요한 기능들인데요, 이번 글에서는 이 기능들의 개념부터 구현 방법까지 자세히 알아보겠습니다.스프링 인터셉터 (Interceptor)인터셉터란?인터셉터는 DispatcherServlet이 컨트롤러를 호출하기 전과 후에 요청과 응답을 가로채서 처리하는 스프링 MVC의 기능입니다. 서블릿 필터와 유사하지만, 스프링 MVC의 컨텍스트 내에서 동작하기 때문에 스프링의 모든 기능을 활용할 수 있다는 장점이 있습니다.인터셉터의 주요 메서드인터셉터를 구현하기 위해서는 HandlerInterceptor 인터페이스를 구현해야 합니다. 이 인터페이스..