Spring boot
-
PatternLayout 이란?Logback-classic 모듈의 가장 유연한 Layout 구현체로, 로깅 이벤트를 개발자가 지정한 변환 패턴(Conversion Pattern)에따라 문자열로 포맷팅한다.쉽게 말해, Logback 에서 로그 메세지를 출력할 때 로그 형식을 만드는 클래스이다.즉, 로그 한 줄이 어떤 구조(패턴)로 출력될지 결정하는 핵심 Layout 클래스라고 보면된다. Logback 에서 Layout 은 로깅 이벤트를 문자열로 변환하는 컴포넌트이며, PatternLayout은 %d, %level, %logger 같은패턴 키워드를 사용해 시간, 레벨, 클래스명 등을 자유롭게 배치할 수 있게 한다.Spring Boot 에서는 기본적으로 PatternLayoutEncoder 가 이 클래스를 사..
PatternLayout 을 상속받아 Logback 마스킹 처리PatternLayout 이란?Logback-classic 모듈의 가장 유연한 Layout 구현체로, 로깅 이벤트를 개발자가 지정한 변환 패턴(Conversion Pattern)에따라 문자열로 포맷팅한다.쉽게 말해, Logback 에서 로그 메세지를 출력할 때 로그 형식을 만드는 클래스이다.즉, 로그 한 줄이 어떤 구조(패턴)로 출력될지 결정하는 핵심 Layout 클래스라고 보면된다. Logback 에서 Layout 은 로깅 이벤트를 문자열로 변환하는 컴포넌트이며, PatternLayout은 %d, %level, %logger 같은패턴 키워드를 사용해 시간, 레벨, 클래스명 등을 자유롭게 배치할 수 있게 한다.Spring Boot 에서는 기본적으로 PatternLayoutEncoder 가 이 클래스를 사..
2025.12.05 -
인스턴스 변수 (instance field)클래스의 각 객체 인스턴스마다 따로 존재하는 필드이다.public int age; 클래스 변수 / 정적 변수 (static field)클래스 로더에 의해 한번 로드외어 모든 인스턴스가 공유하는 필드public static int count; 클래스 상수 (static final)한번 초기화되고 변경 불가한(참조 재할당 불가) 정적 필드관례상 대문자 스네이크 케이스 (예-STATIC_FINAL_FIELD)public static final String NAME = "OBO"; 메모리와 수명 인스턴스 변수각 객체의 힙(Heap) 영역에 저장된다.객체가 가비지 컬렉션 되면 소멸한다. static / static final클래스 메타영역(런타임의 클래스 영역)에 저장..
클래스 변수, 클래스 상수, 인스턴스 변수인스턴스 변수 (instance field)클래스의 각 객체 인스턴스마다 따로 존재하는 필드이다.public int age; 클래스 변수 / 정적 변수 (static field)클래스 로더에 의해 한번 로드외어 모든 인스턴스가 공유하는 필드public static int count; 클래스 상수 (static final)한번 초기화되고 변경 불가한(참조 재할당 불가) 정적 필드관례상 대문자 스네이크 케이스 (예-STATIC_FINAL_FIELD)public static final String NAME = "OBO"; 메모리와 수명 인스턴스 변수각 객체의 힙(Heap) 영역에 저장된다.객체가 가비지 컬렉션 되면 소멸한다. static / static final클래스 메타영역(런타임의 클래스 영역)에 저장..
2025.12.02 -
환경 : Spring Boot 3 Logback 을 통해 로그를 찍을 때 휴대폰번호나 개인정보가 포함된 내용에 대해 마스킹 처리를 해야하는 상황이다.해당 내용은 RestTemplate 요청 시 Interceptor 를 통해 로그를 찍을려고 한다. ✅ Log4j2 의존성 제거 Log4j2 를 사용하고 있으면 의존성을 제거한다. org.springframework.boot spring-boot-starter-log4j2 pom.xml 내 해당 내용을 삭제한다. Spring Boot 로깅을 Logback 기본값으로 돌리려면 starter-logging(Logback) 이 빠져있지 않는지 확인한다.혹시 exclusion 되어 있으면 삭제해야 한다. org.springframew..
Spring Boot Interceptor 를 통한 Logback 로그 찍기환경 : Spring Boot 3 Logback 을 통해 로그를 찍을 때 휴대폰번호나 개인정보가 포함된 내용에 대해 마스킹 처리를 해야하는 상황이다.해당 내용은 RestTemplate 요청 시 Interceptor 를 통해 로그를 찍을려고 한다. ✅ Log4j2 의존성 제거 Log4j2 를 사용하고 있으면 의존성을 제거한다. org.springframework.boot spring-boot-starter-log4j2 pom.xml 내 해당 내용을 삭제한다. Spring Boot 로깅을 Logback 기본값으로 돌리려면 starter-logging(Logback) 이 빠져있지 않는지 확인한다.혹시 exclusion 되어 있으면 삭제해야 한다. org.springframew..
2025.11.27 -
Spring 핵심 메커니즘 중 하나인 트랜잭션 관리는 Spring Boot 를 사용하고 있으면 대부분내부적으로 선언적 트랜잭션 관리를 사용하고 있다. 💡 트랜잭션(Transaction) 이란? 트랜잭션은 데이터베이스의 상태를 변경하는 하나의 논리적 작업 단위를 말한다.즉, 여러 SQL 작업이 있을 때 모두 성공하거나(all or nothing) 모두 실패해야 하는 원자적 단위이다. ✅ 예시 1. 계좌 A → 계좌 B 로 10만원 송금 - A 계좌 잔액 10만원 감소 - B 계좌 잔액 10만원 증가 이 두 SQL 중 하나라도 실패하면, 전체 작업이 취소되어야 함 → 이것이 트랜잭션의 역할입니다.쉽게 말해, 한 메서드 내 2가지 이상의 SQL 작업이 있다고 하면 모두 성공하거나 실패해야 한다...
트랜잭션(Transaction) 관리Spring 핵심 메커니즘 중 하나인 트랜잭션 관리는 Spring Boot 를 사용하고 있으면 대부분내부적으로 선언적 트랜잭션 관리를 사용하고 있다. 💡 트랜잭션(Transaction) 이란? 트랜잭션은 데이터베이스의 상태를 변경하는 하나의 논리적 작업 단위를 말한다.즉, 여러 SQL 작업이 있을 때 모두 성공하거나(all or nothing) 모두 실패해야 하는 원자적 단위이다. ✅ 예시 1. 계좌 A → 계좌 B 로 10만원 송금 - A 계좌 잔액 10만원 감소 - B 계좌 잔액 10만원 증가 이 두 SQL 중 하나라도 실패하면, 전체 작업이 취소되어야 함 → 이것이 트랜잭션의 역할입니다.쉽게 말해, 한 메서드 내 2가지 이상의 SQL 작업이 있다고 하면 모두 성공하거나 실패해야 한다...
2025.11.06 -
@RequestMapping, @GetMapping, @PostMapping 등에 있는 consumes 나 produces 속성은Spring MVC 에서 컨트롤러 메서드가 어떤 타입의 요청 본문을 받아들 일 수 있는지와 응답을 할 수 있는지명시하는 역할을 한다. 1️⃣ 한 문장으로 요약consumes = 요청(Request) 의 Content-Type 을 제한하는 속성produces = 응답(Response) 를 어떤 형식으로 보낼지 제한하는 속성즉, 클라이언트가 HTTP 요청을 보낼 때 Content-Type 헤더가 consumes 에서 지정한 값과 일치해야요청한 컨트롤러 메서드가 호출된다. 2️⃣ 기본 문법@PostMapping(value = "/save", consumes = "application..
@RequestMapping 의 consumes 속성, produces 속성@RequestMapping, @GetMapping, @PostMapping 등에 있는 consumes 나 produces 속성은Spring MVC 에서 컨트롤러 메서드가 어떤 타입의 요청 본문을 받아들 일 수 있는지와 응답을 할 수 있는지명시하는 역할을 한다. 1️⃣ 한 문장으로 요약consumes = 요청(Request) 의 Content-Type 을 제한하는 속성produces = 응답(Response) 를 어떤 형식으로 보낼지 제한하는 속성즉, 클라이언트가 HTTP 요청을 보낼 때 Content-Type 헤더가 consumes 에서 지정한 값과 일치해야요청한 컨트롤러 메서드가 호출된다. 2️⃣ 기본 문법@PostMapping(value = "/save", consumes = "application..
2025.10.13 -
1️⃣ 직렬화(Serialization) 정의Java 객체 → 특정 포맷의 데이터로 변환하는 과정Spring 에서는 주로 HTTP 응답(Response) 으로 전송할 때 사용 예시Java 객체public class User { private String name = "홍길동"; private int age = 30; // getter/setter} 1. JSON 직렬화{"name":"홍길동","age":30} 2. XML 직렬화 홍길동 30 Spring 에서@RestController 에서 객체를 반환할 때 Spring 이 자동으로 직렬화를 수행Converter 역할 : Java 객체 → JSON/XML 등JSON : MappingJackson2HttpMessageConver..
직렬화, 역직렬화 (HttpMessageConverter)1️⃣ 직렬화(Serialization) 정의Java 객체 → 특정 포맷의 데이터로 변환하는 과정Spring 에서는 주로 HTTP 응답(Response) 으로 전송할 때 사용 예시Java 객체public class User { private String name = "홍길동"; private int age = 30; // getter/setter} 1. JSON 직렬화{"name":"홍길동","age":30} 2. XML 직렬화 홍길동 30 Spring 에서@RestController 에서 객체를 반환할 때 Spring 이 자동으로 직렬화를 수행Converter 역할 : Java 객체 → JSON/XML 등JSON : MappingJackson2HttpMessageConver..
2025.10.02