자바 웹 프로젝트 #4 config

Dear·2025년 7월 15일

TIL

목록 보기
62/74

💙 AuditConfig

Spring Data JPA에서 Auditing 기능 (자동으로 생성일자/수정일자, 작성자/수정자 등을 기록하는 기능)을 사용하기 위한 설정 클래스이다.

@Configuration

해당 클래스가 스프링 설정 클래스임을 나타낸다.

@EnableJpaAuditing

JPA Auditing 기능을 활성화한다.
@CreatedDate, @LastModifiedDate, @CreatedBy, @LastModifiedBy 등의 어노테이션을 사용할 수 있다.

@Bean

Spring이 메서드의 반환 객체를 빈(Bean)으로 등록하는 어노테이션

AuditorAware<String>

작성자 정보를 제공하는 인터페이스이다.
제네릭 <String>은 사용자 정보를 문자열로 제공하겠다는 의미이다.

auditorProvider()

AuditorAware의 구현체를 반환하여, 작성자 정보를 어떤 방식으로 얻을지 정의한다.

AuditorAwareImpl()

AuditorAwareImpl은 작성자 정보를 반환하는 사용자 정의 클래스이다.

💙 AuditorAwareImpl

JPA Auditing 기능에서 작성자(Auditor)를 자동으로 설정해주는 역할을 한다.

JPA의 @CreatedBy, @LastModifiedBy 같은 어노테이션이 사용할 "현재 사용자 ID" 를 반환하는 클래스이다.
Spring Security를 사용해 SecurityContext에서 로그인된 사용자 정보를 꺼내서 반환한다.

SecurityContextHolder

인증 정보를 담고 있는 스태틱 클래스

getAuthentication()

현재 로그인한 사용자의 정보를 가져온다.

String userId = "";
if (authentication != null) {
    userId = authentication.getName();
}

로그인된 사용자가 있으면, 그 사용자의 ID(getName())를 가져온다.
로그인하지 않았다면 빈 문자열 그대로 유지된다.

💙 CustomAuthenticationEntryPoint

사용자가 인증되지 않은 상태로 보호된 리소스에 접근했을 때 호출되는 처리 로직

AuthenticationEntryPoint

인증되지 않은 사용자가 요청할 경우 호출되는 인터페이스이다.
토큰이 없거나, 로그인하지 않은 사용자가 API를 호출할 때 로그인 페이지로 리다이렉트 대신 JSON 에러 응답을 주고 싶을 때 사용한다.

authException

인증 실패 원인을 담고 있다.

response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized");

HTTP 401 Unauthorized 에러를 클라이언트에 보낸다.

상태코드 401 : 인증되지 않았다는 의미
Unauthorized는 응답 본문에 담긴다. (브라우저 또는 클라이언트가 확인 가능)

예시

GET /api/user/profile
Authorization: (없음)

인증이 필요한 API인데 인증 정보가 없다면, Spring Security는 이 클래스를 실행하여 다음과 같이 응답

HTTP/1.1 401 Unauthorized
Content-Type: text/plain

Unauthorized

💙 WebMvcConfig

정적 리소스(예: 이미지 파일)를 외부 경로에서 불러올 수 있도록 매핑해주는 설정

/images/**로 들어오는 URL 요청을 실제 파일 시스템이 uploadPath 경로로 매핑해준다.

WebMvcConfigurer

Spring MVC 설정을 커스터마이징할 수 있는 인터페이스

@Value("${uploadPath}")

application.properties 또는 application.yml에 정의된 uploadPath값을 가져온다.
uploadPath=file:///C:/project/uploads/ -> 실제 파일이 저장된 경로
앞에 반드시 file:/// 처럼 프로토콜을 붙여야한다.

ResourceHandlerRegistry

Spring MVC에서 정적 자원(리소스)을 클라이언트에게 제공하기 위한 리소스 핸들러(Resource Handler)를 등록하는 역할

addResourceHandler("/images/**")

클라이언트가 /images/~~~로 요청

addResourceLocations(uploadPath)

실제 파일 시스템의 uploadPath 경로에서 해당 파일을 찾아 응답하게 한다.

profile
친애하는 개발자

0개의 댓글