Programming/Spring 15

Spring AOP

Spring AOP(Aspect-Oriented Programming) 1. AOP란?AOP는 관심사 분리(Separation of Concerns)를 구현하는 방법 중 하나다.핵심 비즈니스 로직(core logic)과 부가 기능(cross-cutting concern)을 분리해서 관리할 수 있게 해준다.예를 들어 로깅, 트랜잭션, 예외 처리 같은 반복되는 코드를 각 Controller나 Service마다 넣지 않고, AOP로 한 곳에서 처리할 수 있다.2. 핵심 애너테이션@AspectAOP 기능을 수행할 클래스에 적용반드시 Spring Bean이어야 함 (@Component 필요)Advice 종류@Around : 핵심 로직 전후 모두 수행 가능 (@Before + @After)@Before : 핵심 로..

Programming/Spring 2025.09.19

RestTemplate이란 무엇일까?

Spring RestTemplate 정리1. RestTemplate이란?RestTemplate은 Spring에서 제공하는 HTTP 클라이언트 라이브러리다.다른 서버에 HTTP 요청을 보내고 응답을 받을 때 사용된다.동기 방식으로 동작하며, GET, POST, PUT, DELETE 등 다양한 HTTP 메서드를 지원한다.요약하면 Spring에서 서버 간 통신(REST API 호출)을 간편하게 해주는 도구다.2. RestTemplate의 GET 요청GET 요청은 주로 데이터를 조회할 때 사용한다.예제RestTemplate restTemplate = new RestTemplate();String url = "https://api.example.com/users/1";ResponseEntity response =..

Programming/Spring 2025.09.16

@Validation

Spring Validation과 예외 처리 정리1. @Valid / @Validated란?Spring에서 사용자 입력값 검증을 쉽게 처리하기 위해 제공되는 애너테이션이다.주로 Controller의 요청 DTO에 붙여 사용한다.예시public class UserRequestDto { @NotBlank(message = "이름은 필수 입력값입니다.") private String name; @Email(message = "이메일 형식이 올바르지 않습니다.") private String email; @Size(min = 8, max = 20, message = "비밀번호는 8~20자 사이여야 합니다.") private String password;}@NotBlank, @Emai..

Programming/Spring 2025.09.16

Spring Security 권한 설정과 접근 제어 정리

Spring Security 권한 설정과 접근 제어 정리1. 접근 불가 페이지 만들기Spring Security는 접근 권한이 없는 사용자가 보호된 페이지에 접근할 경우 자동으로 403 Forbidden 페이지를 제공한다.커스터마이징 가능:@Configurationpublic class WebSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .exceptionHandling() .accessDeniedPage("/access-denied"); // 접근 불가 페이지 return h..

Programming/Spring 2025.09.16

Spring Security와 JWT 인증/인가

Spring Security와 JWT 인증/인가 완전 정리1. Spring Security란?Spring Security는 Spring 기반 애플리케이션의 보안을 담당하는 프레임워크다.주요 기능은 다음과 같다.인증(Authentication): 사용자가 누구인지 확인인가(Authorization): 사용자가 접근 권한이 있는지 확인공통 보안 처리: CSRF, CORS, 세션 관리, 비밀번호 암호화 등즉, 웹 애플리케이션 보안의 거의 모든 것을 처리할 수 있는 통합 모듈이라고 보면 된다.2. Spring Security의 기본 로그인 기능Spring Security를 적용하면 기본적으로 제공되는 폼 로그인 기능이 있다.별도로 로그인 화면을 만들지 않아도 /login URL로 접근 시 기본 로그인 폼을 제공..

Programming/Spring 2025.09.16

필터

.Spring Filter와 Filter Chain 완전 정리1. Filter란?Filter는 클라이언트 요청(Request)과 서버 응답(Response) 사이에 개입할 수 있는 객체다.주로 인증, 로깅, 인코딩, 보안 처리 등에 사용된다.즉, Controller에 도달하기 전에 공통 기능을 처리하는 중간 모듈이라고 보면 된다.2. Filter Chain이란?여러 개의 Filter가 순서대로 실행될 때, 이를 Filter Chain이라고 한다.각 Filter는 자신이 수행할 작업을 마친 뒤, chain.doFilter(request, response)를 호출해야 다음 Filter나 Controller로 요청이 전달한다.chain.doFilter를 호출하지 않으면 요청이 더 이상 진행되지 않아, Cont..

Programming/Spring 2025.09.16

JWT 다루기

Spring JWT Util 클래스(JwtUtil) 정리1. JwtUtil 클래스란?JwtUtil 클래스는 JWT 관련 기능을 한 곳에 모아둔 유틸리티 클래스다.독립적으로 JWT 생성, 검증, 쿠키 저장, 정보 추출 등을 수행한다.2. JwtUtil에서 처리하는 기능JWT 생성사용자 정보(아이디, 권한 등)를 담아 JWT를 발급한다.만료 시간과 서명 알고리즘을 지정한다.JWT를 쿠키에 저장생성한 JWT를 클라이언트에 전달하기 위해 Cookie에 담는다.경로, 만료 시간, HttpOnly 옵션을 설정한다.쿠키에서 JWT 추출요청 시 쿠키에서 JWT를 찾아 가져온다.필요 시 Substring으로 순수 토큰만 분리한다.JWT 검증JWT가 변조되지 않았는지 서명을 확인한다.만료 시간 및 유효성도 검증한다.JWT..

Programming/Spring 2025.09.16

쿠키와 세션이란 무엇일까?

Spring에서 쿠키와 세션 완전 정리1. 쿠키(Cookie) 개념클라이언트(브라우저)에 저장되는 작은 데이터 조각서버가 클라이언트에게 데이터를 보내고, 이후 요청 시 다시 전달받음주로 로그인 정보, 장바구니, 사용자 설정 등에 사용쿠키 구조Name쿠키 이름Value쿠키 값Domain쿠키를 전송할 도메인Path쿠키를 전송할 URL 경로Expires / Max-Age쿠키 만료 시간SecureHTTPS 전송 여부HttpOnlyJS 접근 차단 여부쿠키 저장 방식클라이언트 브라우저가 저장요청마다 HTTP Header에 포함되어 서버에 전송 (Cookie 헤더)2. 세션(Session) 개념서버가 관리하는 사용자 상태 정보로그인 상태, 장바구니, 권한 정보 등 서버가 관리클라이언트에는 세션 ID만 전달세션 구조S..

Programming/Spring 2025.09.15

인증과 인가란 무엇일까?

인증(Authentication)과 인가(Authorization) 이해하기1. 인증(Authentication)과 인가(Authorization)① 인증(Authentication)사용자가 누구인지 확인하는 과정“내가 누구인지 증명”하는 행위예: 아이디/비밀번호 로그인, OTP, OAuth 로그인② 인가(Authorization)사용자가 특정 리소스에 접근할 권한이 있는지 확인하는 과정“내가 무엇을 할 수 있는지 결정”하는 행위예: 관리자 페이지 접근, 특정 API 호출 권한 체크사용자 인증(Authentication) → 사용자 신원 확인사용자 인가(Authorization) → 권한 확인 후 접근 허용 2. 인증 방식의 종류① 쿠키-세션 방식 (Stateful)서버가 클라이언트 상태를 저장 → 세션..

Programming/Spring 2025.09.15

Bean을 수동으로 등록하는 방법

Spring에서 Bean 수동 등록과 같은 타입 Bean 처리1. Bean 수동 등록Spring에서 Bean은 보통 @Component, @Service, @Repository, @Controller로 자동 등록되지만,특정 상황에서는 직접 Bean을 등록해야 할 때가 있음.방법 1: @Configuration + @Bean@Configurationpublic class AppConfig { @Bean public PaymentService paymentService() { return new PaymentService(); } @Bean public OrderService orderService() { return new OrderService(paym..

Programming/Spring 2025.09.15