[Spring Boot] GlobalExceptionHandler 예외 처리
·
Development & Projects/Java
Global Exception이란?Global Exception(전역 예외 처리)이란, 애플리케이션 전반에서 발생하는 예외를 한 곳에서 통합적으로 처리할 수 있는 방식입니다.일반적으로 Spring MVC 기반 웹 애플리케이션에서는 컨트롤러나 서비스 계층에서 다양한 예외가 발생할 수 있습니다. 이를 각각의 코드에서 try-catch로 처리하다 보면중복 코드가 많아지고예외 메시지나 응답 포맷이 제각각이며유지보수 난이도가 올라갑니다.👉 이 문제를 해결하기 위해 스프링에서는 @ControllerAdvice (또는 @RestControllerAdvice)와 @ExceptionHandler를 활용하여 예외를 전역적으로 처리할 수 있습니다. 어노테이션설명@ControllerAdvice모든 컨트롤러의 예외를 가로채 ..
[Spring Security] UsernamePasswordAuthenticationFilter Authentication Flow
·
Development & Projects/Java
UsernamePasswordAuthenticationFilter는 Spring Security에서 사용자가 로그인할 때 인증을 처리하는 핵심적인 필터입니다. UsernamePasswordAuthenticationFilter가 Spring Security 인증 과정에서 어떻게 동작하는지 알아보겠습니다. 1. Spring Security와 인증 Spring Security는 Spring 기반 애플리케이션에서 보안을 처리하는 프레임워크로, 인증(authentication)과 권한 부여(authorization) 기능을 제공합니다. 이 중에서 인증 과정은 사용자의 아이디와 비밀번호를 확인하여 시스템에 접근할 수 있는지 판별하는 과정입니다. UsernamePasswordAuthenticationFilter는 S..
[Spring] Spring Security CSS 적용 안되는 오류
·
Development & Projects/Java
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
·
Development & Projects/Java
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)
·
Development & Projects/Java
* "김영한님의 코드로 배우는 스프링 부터, 웹 MVC, DB 접근 기술" 강의를 듣고 배운 점을 기록한 글입니다.  실습 중 기존 MemoryMemberRepository에서 JdbcMemberRepository로 교체하여 JDBC 기반의 데이터 저장소를 사용하도록 변경하였다. MemberRepository라는 추상화된 인터페이스를 사용해 확장 가능하도록 설계되었다. MemberRepository 인터페이스를 사용하여 의존성을 관리했기 때문에, 기존 코드(MemberService)를 수정하지 않고도 데이터 저장 방식을 변경할 수 있다. 소프트웨어 공학 시간에 배운 OCP를 준수하여 실제로 코드 구현까지 해보니 인터페이스를 활용한 설계의 중요성을 직접 체감할 수 있었다. +) 스프링의 DI를 활용하면 더..
[Java] Static 변수와 Static 메소드
·
Development & Projects/Java
Static 변수 다음과 같은 HouseLee 클래스가 있다고 하자.class HouseLee { String lastname = "이";}public class Sample { public static void main(String[] args) { HouseLee lee1 = new HouseLee(); HouseLee lee2 = new HouseLee(); }} HouseLee 클래스를 만들고 객체를 생성하면 객체마다 객체 변수 lastname을 저장하기 위한 메모리가 별도로 할당된다.하지만 HouseLee 클래스의 lastname이 어떤 객체이든지 동일한 값인 '이'로 항상 값이 변하지 않는다면 static을 이용해 메모리 낭비를 줄일 수 있다. 또한 ..
[Java] 상속, 생성자, 오버라이딩
·
Development & Projects/Java
상속- 자바에서 기존 클래스(부모 클래스 또는 슈퍼 클래스)의 속성과 메서드를 새로운 클래스(자식 클래스 또는 서브 클래스)가 물려받는 기능 - 상속을 통해 자식 클래스는 부모 클래스의 기능을 재사용하거나 확장 가능상속 기본 문법 extends 키워드 사용class 부모클래스 { // 부모 클래스의 멤버 변수와 메서드}class 자식클래스 extends 부모클래스 { // 자식 클래스는 부모 클래스의 멤버를 상속받음}// 예제class Animal { void sound() { System.out.println("Some sound..."); }}class Dog extends Animal { void bark() { System.out.println(..