[Spring boot] @Transactional 이란?
·
개발 | 프로젝트/Java | Spring
1. 트랜잭션이란?트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 작업 단위를 말합니다. 쇼핑몰에서 주문을 처리할 때, 주문 정보 저장, 재고 감소, 결제 처리가 모두 성공해야만 전체 주문이 완료됩니다. 이 세 가지 작업을 하나의 트랜잭션으로 묶어서 처리하면, 중간에 문제가 생겼을 때 모든 작업을 원래대로 되돌릴 수 있습니다.트랜잭션은 다음 네 가지 특성(ACID)을 가집니다.원자성(Atomicity): 트랜잭션 내의 모든 작업은 전부 성공하거나 전부 실패합니다.일관성(Consistency): 트랜잭션이 완료된 후에도 데이터베이스는 일관된 상태를 유지해야 합니다.격리성(Isolation): 동시에 실행되는 트랜잭션들은 서로 영향을 미치지 않습니다.지속성(Durability): 트랜잭션이 성공적으..
[Spring Boot] GlobalExceptionHandler 예외 처리
·
개발 | 프로젝트/Java | Spring
Global Exception이란?Global Exception(전역 예외 처리)이란, 애플리케이션 전반에서 발생하는 예외를 한 곳에서 통합적으로 처리할 수 있는 방식입니다.일반적으로 Spring MVC 기반 웹 애플리케이션에서는 컨트롤러나 서비스 계층에서 다양한 예외가 발생할 수 있습니다. 이를 각각의 코드에서 try-catch로 처리하다 보면중복 코드가 많아지고예외 메시지나 응답 포맷이 제각각이며유지보수 난이도가 올라갑니다.👉 이 문제를 해결하기 위해 스프링에서는 @ControllerAdvice (또는 @RestControllerAdvice)와 @ExceptionHandler를 활용하여 예외를 전역적으로 처리할 수 있습니다. 어노테이션설명@ControllerAdvice모든 컨트롤러의 예외를 가로채 ..
[Spring Security] UsernamePasswordAuthenticationFilter Authentication Flow
·
개발 | 프로젝트/Java | Spring
UsernamePasswordAuthenticationFilter는 Spring Security에서 사용자가 로그인할 때 인증을 처리하는 핵심적인 필터입니다. UsernamePasswordAuthenticationFilter가 Spring Security 인증 과정에서 어떻게 동작하는지 알아보겠습니다. 1. Spring Security와 인증 Spring Security는 Spring 기반 애플리케이션에서 보안을 처리하는 프레임워크로, 인증(authentication)과 권한 부여(authorization) 기능을 제공합니다. 이 중에서 인증 과정은 사용자의 아이디와 비밀번호를 확인하여 시스템에 접근할 수 있는지 판별하는 과정입니다. UsernamePasswordAuthenticationFilter는 S..
[Spring] Spring Security CSS 적용 안되는 오류
·
개발 | 프로젝트/Java | Spring
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { return http .authorizeHttpRequests((authorizeRequests) -> // 3. 인증, 인가 설정 authorizeRequests .requestMatchers("/login", "/signup", "/user").permitAll() // login, signup, user는 인증 없이 접근 가능 .anyRequest().authenticated..
[Spring] Spring Security
·
개발 | 프로젝트/Java | Spring
Spring SecuritySpring Security is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based applications. Spring Security is a framework that focuses on providing both authentication and authorizspring.io  Spring Security는 강력하고 고도로 사용자 정의 가능한 인증 및 접근 제어 프레임워크이다. Spring 기반 애플리케이션의 보안을 위한 사실상의 표준이며, Java 애플리케이션에 인증과 권한 부여를..
[Spring] 개방-폐쇄 원칙 (OCP, Open Closed Principle)
·
개발 | 프로젝트/Java | Spring
* "김영한님의 코드로 배우는 스프링 부터, 웹 MVC, DB 접근 기술" 강의를 듣고 배운 점을 기록한 글입니다.  실습 중 기존 MemoryMemberRepository에서 JdbcMemberRepository로 교체하여 JDBC 기반의 데이터 저장소를 사용하도록 변경하였다. MemberRepository라는 추상화된 인터페이스를 사용해 확장 가능하도록 설계되었다. MemberRepository 인터페이스를 사용하여 의존성을 관리했기 때문에, 기존 코드(MemberService)를 수정하지 않고도 데이터 저장 방식을 변경할 수 있다. 소프트웨어 공학 시간에 배운 OCP를 준수하여 실제로 코드 구현까지 해보니 인터페이스를 활용한 설계의 중요성을 직접 체감할 수 있었다. +) 스프링의 DI를 활용하면 더..