Spring and Spring Boot/Class, Annotation, Library 13

Spring Security Library : SecurityContextHolder Class

SecurityContextHolder는 Spring Security에서 인증된 사용자의 보안 정보를 애플리케이션의 전체 범위에서 관리하고 접근할 수 있도록 하는 핵심적인 역할을 합니다. 이 객체는 인증이 성공하면 Authentication 객체를 저장하며, 애플리케이션의 다른 컴포넌트가 이를 참조할 수 있게 합니다.  1. SecurityContextHolder의 역할SecurityContextHolder는 보안 컨텍스트(SecurityContext) 를 관리하는 저장소입니다. SecurityContext는 현재 인증된 사용자에 대한 정보를 담고 있는 객체로, 주로 Authentication 객체가 포함됩니다.SecurityContextHolder는 각 요청에 대해 인증된 사용자 정보를 저장하고, 이 ..

Spring Security Library : DispatcherServlet Class

DispatcherServlet은 Spring MVC의 핵심 서블릿으로, HTTP 요청을 처리하기 위해 사용됩니다. Spring Security와 Spring Boot에서 DispatcherServlet은 요청을 처리하는 중요한 역할을 하며, Spring Security의 보안 관련 필터를 통합하여 인증 및 권한 부여를 처리합니다.DispatcherServlet의 유의미한 동작 (스프링 시큐리티 및 스프링 부트 관점)DispatcherServlet의 역할:클라이언트로부터 들어오는 HTTP 요청을 **핸들러(컨트롤러)**에게 전달하는 역할을 합니다.DispatcherServlet은 Spring MVC 프레임워크에서 핸들러 매핑, 컨트롤러 호출, 뷰 리졸버와의 통합을 담당하며, 핸들러 인터셉터 및 필터를 통..

Spring Security Library : HttpServletRequest Interface

스프링 시큐리티 및 스프링 부트에서 HttpServletRequest 객체는 중요한 역할을 하며, 보안 관련 작업에 많이 사용됩니다. 아래는 HttpServletRequest에서 스프링 시큐리티 및 스프링 부트 동작에서 유의미한 동작과 관련된 주요 메소드들입니다.1. getAuthType()설명: 이 메소드는 요청에 대해 사용된 인증 방법을 반환합니다. 예를 들어, "BASIC", "FORM", "CLIENT_CERT", "DIGEST" 등이 될 수 있습니다.스프링 시큐리티에서 사용: 스프링 시큐리티에서 인증 방식(Basic, Form 등)을 확인할 때 사용될 수 있습니다. 인증 방식은 인증을 처리하는 필터에 영향을 미칩니다.String authType = request.getAuthType();2. g..

Library : Mockito에서 제공하는 when ~ then 구문을 활용한 스프링부트 단위 테스트

when ~ then을 사용한 검증Mockito는 Java에서 가장 인기 있는 Mocking 라이브러리로, 주로 단위 테스트에서 객체 간의 의존성을 Mock 처리하고, 이를 통해 독립적인 테스트 환경을 구축할 수 있도록 돕습니다. Mockito에서 테스트할 때, when ~ then 구문은 동작 설정 및 검증을 위한 핵심적인 부분입니다.when(mockObject.method()).thenReturn(someValue);when(mockObject.method())Mockito 라이브러리에서 Mock 객체의 메서드를 호출하는 형태입니다. 이 구문을 사용할 때, Mock 객체는 실제 구현이 아닌, 모킹(mocking)된 객체입니다. 이 객체는 가짜 객체로, 실제 구현체가 아닌 테스트에서 예상한 동작을 하도..

Annotation : HTTP 요청 데이터 바인딩 방법 비교하기 (@RequestBody, @RequestParam, @ModelAttribute)

@RequestBody를 사용한 실제 코드 예시를 보면, "이건 무엇일까?"라는 궁금증이 생길 수 있습니다. 아래 예시를 확인해봅시다.@RestControllerpublic class UserController { @PostMapping("/users") public ResponseEntity createUser(@RequestBody User user) { // User 객체로 변환된 요청 바디를 처리하는 로직 System.out.println("User created: " + user.getName()); return ResponseEntity.ok("User created successfully!"); }} @RequestBody의 개념 : HT..

Class : HTTP 응답을 표현하는 데 사용되는 클래스 (ResponseEntity, HttpEntity)

프로젝트 작성할 때마다 사용하는 ResponseEntity, 이건 뭘까?package org.example.web.vo;import lombok.RequiredArgsConstructor;import lombok.extern.slf4j.Slf4j;import org.springframework.http.ResponseEntity;import org.springframework.scheduling.config.Task;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestB..

Class : 모든 자바 클래스의 최상위 자바 클래스 (Object)

더보기Object.class 내부 코드 전체보기/* * Copyright (c) 1994, 2021, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this * particular ..

Spring Security Library : HttpSecurity Class

➡️ HttpSecurity 객체란?HttpSecurity 객체는 스프링 시큐리티에서 HTTP 요청에 대한 보안 설정을 구성하는 주요 클래스로, 이를 이용하여 URL 패턴에 대한 인증, 권한 부여, CORS 설정, 세션 관리 등 다양한 보안 관련 설정을 할 수 있습니다.  어떤 URL 경로가 인증을 요구하는지어떤 URL 경로는 누구나 접근할 수 있게 할지요청에 대해 어떤 방식으로 인증을 처리할지import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.security.config.annotation.web.builder..

Annotation : 검증 관련 어노테이션 (@Valid, @Validated)

CF. Validation과 Verification: 두 용어 모두 확인 및 검증을 의미한다. 다만 그 검증에 있어 영역에 차이가 있는데, Verification은 개발자 관점에서의 시스템 검증을 의미한다. 개발하고 있는 시스템이 미리 정의한 사양(specification)에 부합하는지 검증하는 것이다. 아직 실제 시스템이 구현된 상태가 아닐 수 있기 때문에 시뮬레이션을 통해 검증이 이루어진다.반면, Validation은 사용자 관점에서의 시스템 검증을 의미한다. 개발 완료된 시스템이 사용자의 요구사항을 충족하는지 확인하는 지 검증하는 것이다. 실제 시스템이 구현된 상태이기 때문에 직접 타깃 시스템에 검증을 하게 된다.➡️ @Valid Validation을 목적으로 하는 어노테이션이다. Java의 Bea..

Annotation : 테스트 관련 어노테이션 (@Test, @BeforeEach, @AfterEach, @Extendwith)

➡️ 스프링부트 테스트 어노테이션@SpringBootTestSpring Boot 애플리케이션 전체 컨텍스트를 로드하여 JUnit 테스트 환경에서 스프링 빈(예: ItemRepository)을 사용할 수 있습니다.일반적인 단위 테스트(Unit Test)보다 더 광범위한 통합 테스트를 실행합니다.➡️ JUnit 어노테이션@Test : JUnit에서 테스트 메서드임을 나타냅니다. 이 애너테이션이 없으면 JUnit은 해당 메서드를 실행하지 않습니다. 이는 테스트 방식을 구분할 수 있는 애너테이션으로, 메서드를 호출할 때마다 새 인스턴스를 생상하여 독립 테스트가 가능하게 해줍니다.@DisplayName("더하기 테스트") : JUnit 5에서 제공하는 애너테이션으로, 테스트 이름을 좀 더 설명적으로 표시할 수 있..