반응형

Back-end/Spring 14

[Spring] Spring Boot(Log) Slf4j, Logback 로깅 레벨 관리하는 방법

평소에 로깅에 대해서 많이 고려하지 않고 간단하게 @slf4j 어노테이션을 통해서 간단하게 로그 확인용으로 사용하기만 해서 로깅을 어떤 상황에 사용하고 왜 사용하는지 궁금증이 생기기 시작했습니다 그리고 사이드 프로젝트로 개인 운영 서버를 몇 개 운영하는 입장에서도 로깅에 대한 필요성을 느끼고 있으며 이번에 로깅에 대해서 정리해보려고 합니다로깅(Loggin)이란?소프트웨어 애플리케이션이 실행되는 동안 방생하는 모든 상태,흐름,이벤트,오류 정보를 순서대로 기록으로 남기는 행위를 말한다 이 기록은 단순히 개발 중 확인용이 아닌 운영 중인 애플리케이션(서버)의 상태를 기록하고 문제를 추적하기 위한 근거 자료라고 볼수 있다 즉 이 시스템에서 어떤 일이 일어나고 있는지 확인할 수 있는 자료를 기록하는 행위이다로깅..

Back-end/Spring 2026.02.12

[Spring] Spring Security JWT 로그인 구현 필수 개념 (Session, JWT, Access / Refresh Token)

이전 글에서 Spring Security의 기본 구조와 인증 처리 흐름에 대해 작성해 보았습니다이번에는 Spring Security를 이용하여 JWT 토큰 기반 인증 방식을 적용한 로그인 서비스를 구현해보려고 합니다 Spring Security에서 기본적으로 세션(Session) 기반 인증 방식을 제공하고 있습니다세션 기반 인증클라이언트가 서버에 로그인 요청을 보내고 로그인 성공 시 서버가 사용자의 인증 정보를 세션에 저장하고 세션 ID를 생성하여 클라이언트에 쿠키로 전달한다 이후 요청에서 클라이언트는 세션 ID를 함께 보내 서버에서 사용자를 식별한다위 다이어그램은 세션 기반 인증 방식의 전체 흐름을 간단하게 나타낸 것이다 클라이언트와 서버 간의 인증 방식은 크게 다음과 같은 순서로 진행된다 1. 로그인..

Back-end/Spring 2026.01.16

[Spring] Spring Security 기본 구조와 인증 처리 흐름 (Filter Chain)

Spring Security란?Spring Security는 Spring 기반 애플리케이션의 인증(Authentication)과 인가(Authorization)를 담당하는 보안 프레임워크웹 애플리케이션에서 사용자의 접근을 제어하며 권한에 따른 리소스 보호하는 역할을 합니다 또한 Spring Security는 다양한 보안 관련 옵션을 기본으로 제공하고 있으며 대표적으로 CSRF 공격, 세션 고정(Session Fixation) 공격과 같은 웹 보안 위협을 방어할 수 있도록 지원합니다 여기에 JWT 기반 인증을 도입하고 Token을 HttpOnly 쿠키로 관리하는 방식으로 구현한다면 프론트에서 자바스크립트를 통한 토큰 접근을 차단할 수 있어 XSS 공격에 대한 방어 수준을 강화할 수 있습니다 CSRF 공격사..

Back-end/Spring 2026.01.09

[Spring] Spring Boot + MySQL 연동 & JPA 활용 심화 (2)

이전 포스팅에서 Spring Boot와 MySQL 연동하여 프로젝트 실행 후 출력되는 로그에 대해서 살펴봤다면 이번에는JPA를 실제 프로젝트에서 어떻게 사용되고 활용하는지에 대해서 작성해보려고 합니다 이번 글에서는 간단한 게시판 프로젝트를 예제로 사용하여 설명합니다엔티티 설계 방식엔티티는 DB 테이블과 매핑되는 클래스로 @Entity 어노테이션이 붙은 객체를 의미한다Spring에서는 JPA를 사용할 때 DB 테이블을 자바 클래스로 설계하고 관리하기 위해 주로 사용된다 그런데 엔티티를 "테이블을 자바 클래스로 옮긴 것" 정도로 생각하기 쉬운데 실제로는 JPA가 상태를 관리하는 객체 입니다JPA는 엔티티를 영속성 컨텍스트에 올려두고, 트랜잭션 동안 엔티티의 상태 변화를 추적하여 커밋 시점에서 필요한 SQL을..

Back-end/Spring 2026.01.03

[Spring] Spring Boot + MySQL 연동 & JPA 활용 심화 (1)

Spring Boot와 MySQL을 연동하는 방법에 대해서 정리하고 JPA를 활용하여 데이터베이스를 설계하고 조작하는 방법에 대해서 작성하려고 합니다 Spring Boot + MySQL 연동 방법1. Spring dependency 설정Spring 프로젝트를 생성할 때 dependency를 다음과 같이 추가해줍니다[1] Spring Web- Spring MVC를 기반으로 HTTP 요청과 응답을 처리하며, REST API와 MVC 템플릿 기반 웹 애플리케이션을 구현할 수 있는 웹 환경을 제공하는 의존성[2} Spring Data JPA- Spring 프레임워크에서 JPA(Java Persistence API)를 쉽고 편리하게 사용할 수 있도록 Repository 추상화를 제공하는 데이터 접근 의존성[..

Back-end/Spring 2025.12.30

[Spring] Spring Data JPA 어노테이션 정리 (초기화 전략,연관관계,Repository)

Spring의 대표적인 ORM Spring Data JPA에 대해서 작성해보려고 합니다 먼저 ORM은 객체 지향 프로그래밍 언어의 객체와 관계형 데이터베이스의 테이블 간의 데이터를 자동으로 변환해 주는 기술입니다 간단하게 말하면 DB의 테이블을 클래스 형태로 표현하고 이를 자동을 테이블에 매핑 해주는 기술이라고 보면 됩니다 이게 되게 편리하다고 느끼는 부분이 직접 SQL을 통해서 테이블을 정의하지 않고 클래스 형태로 정의가 가능하기 때문에 훨씬 간편하고 가독성도 되게 좋다고 느끼고 있습니다 또한 기본적인 쿼리문(CRUD)도 지원하고 쿼리메서드도 지원하고 있어 메서드의 이름을 통해서 쿼리문 역할을 할 수 있도록 구현하기도 합니다JPA(Java Persistence API)자바에서 객체와 관계형 데이터베이스..

Back-end/Spring 2025.11.06

[Spring] Java 제네릭과 람다 개념 정리 및 Service 계층 활용 예제

Java는 꾸준히 발전하면서 개발자가 더 안전하고 간결한 코드를 작성할 수 있도록 새로운 기능을 도입해 왔습니다대표적으로 Java 5에서 추가된 제네릭(Generic), Java 8에서 도입된 람다(Lambda) 입니다 이러한 제네릭과 람다를 Spring에서 어떻게 활용되고 왜 사용하는지 알아보려고 합니다1. 제네릭 (Generic) 제네릭(Generic)은 클래스나 메서드가 사용할 타입을 파라미터처럼 일반화하여 다룰 수 있도록 해주는 문법입니다 제네릭은 Java 5에서 처음 도입된 기능입니다 그 이전에는 List, Map과 같은 자료구조 컬렉션을 사용할 때 타입 안정성이 보장되지 않았습니다 List에 문자열과 정수를 동시에 넣을 수 있었으며 값을 꺼낼 때는 무조건 Object 타입으로 반환되기 때문에..

Back-end/Spring 2025.09.23

[Spring] DTO와 ResponseEntity로 깔끔한 응답 처리하기

Spring Boot로 API를 개발할 때 응답을 어떻게 반환할지에 대한 고민이 생깁니다 API 개발을 할때할 때 DB와 같이 사용하여 응답하도록 구현하는데 여기서 엔티티 자체를 반환한다면 불필요한 값도 같이 포함하여 반환하게 되기 때문에 비효율적인 방식입니다 또한 상태 코드나 헤더를 포함하여 반환해야 할 때도 존재합니다 이러한 문제점을 보완 하기 위해 DTO와 ResponseEntity를 같이 사용하게 되면 안정적이고 명확한 응답 처리가 가능합니다DTO(Data Transfer Object)란?API 요청/응답 전용 객체로 엔티티를 직접 노출하지 않고 필요한 데이터만 클라이언트 및 서버에 전달하는 역할을 합니다유지보수성과 안정성을 높여주며 많이 사용되는 방식입니다 다음과 같은 User 엔티티가 존재한다..

Back-end/Spring 2025.08.28

[Spring] Spring Boot Controller & Service & Repository 구조 이해하기 (MVC 패턴)

Spring Boot로 API 서버를 개발할 때 주로 MVC 패턴(Model-View-Controller)을 기반으로 Controller,Service,Repository 계층을 나누어 개발하게 됩니다 MVC 패턴을 사용했을때의 장점과 어떤 방식으로 사용되는지에 대해 정리해보려고 합니다 먼저 Spring Boot의 동작 방식에 대해서 알아보려고 합니다Spring Boot 동작 방식스프링 부트는 spring-boot-starter-web 모듈을 사용하면 기본적인 톰캣(Tomcat)을 사용하는 Spring MVC 구조를 기반으로 동작하게 됩니다 spring-boot-starter-webSpring MVC + 내장 톰캣(Tomcat)을 기본으로 제공하는 모듈REST API,웹 애플리케이션 개발을 위한 필수..

Back-end/Spring 2025.08.27

[Spring] Spring Boot로 간단한 API 만들기 (Hello REST API)

백엔드 개발에 주로 사용되는 Spring 프레임워크를 사용하여 간단한 Hello REST API를 만들어 보려고 합니다REST API는 무엇이고 기본 동작 원리에 대해 정리하려고 합니다REST (Representational State Transfer)자원을 URI로 구분하고 HTTP Method를 활용하여 CRUD를 수행하는 아키텍처 스타일입니다즉 어떤 자원(Resource)에 대해 무슨 행동(Method)을 할지 조합하여 API 설계하는 방식REST API 의 특징- 자원(Resource): /users, /blog/1 처럼 URI로 표현- 행위(Method): GET,POST,PUT,PATCH,DELETE 같은 HTTP Method 사용- 표현(Representation): JSON,XML 등으로 ..

Back-end/Spring 2025.08.26

[Spring] CORS이 무엇이며 Spring Boot에서 해결 하는 방법

CORS 에러 백엔드 개발을 끝내고 프론트에서 서버에 요청하여 데이터를 가져올 때 자주 생기는 오류인데요 오류 내용을 보면 다음과 같습니다'http://localhost:3000'에서 XMLHttpRequest를 통해 'http://localhost:8080/api/posts'로 요청을 보냈지만, CORS 정책에 의해 차단되었습니다.그 이유는, 응답에 'Access-Control-Allow-Origin' 헤더가 포함되어 있지 않기 때문입니다. React(3000번 포트)에서 Spring 서버(8080)로 요청을 보냈지만 서로 다른 Origin이기 때문에 브라우저는 동일 출처 정책(SOP)에 따라 응답 접근을 차단합니다 이때 서버(Spring)는 응답을 보냈더라도 응답 헤더에 Access-Control-A..

Back-end/Spring 2025.04.10

[Spring] SpringBoot 3버전 Swagger 적용 및 활용

Swagger란?REST API를 설계하고 문서화하여 테스트하는데 사용되는 프레임워크어노테이션을 통해서 쉽게 API 문서를 HTML으로 자동생성하는 기능을 제공하고 있습니다 프론트엔드와 같이 협업하는 과정에서 유용하게 활용할 수 있습니다 구현했던 API를 직접 문서로 작성할 필요 없이 Swagger를 사용하여 자동으로 생성한 API 문서로 확인하면 되기 때문에 편리하며 생산성 측면에 있어서 효율이 좋기 때문에 자주 사용되고 있습니다 Swagger 적용하기Spring Boot 버전에 따라서 적용하는 방법이 다르게 적용됩니다2.x 버전 이하는 springdoc-openapi 1.x 를 사용하여 프레임워크를 사용합니다 의존성 추가 (Gradle) dependencies { implementation 'o..

Back-end/Spring 2025.04.06

[Spring] 스프링 프로젝트 application.properties 한글 깨짐 해결 방지

application.properties 한글 깨짐 프로젝트를 새로 생성해서 application.properties에 데이터베이스 연결 정보를 작성하고 깃허브에 Push 작업을 했는데 💢 다음날 확인해 보니 한글로 작성한 주석이 깨진 상태로 깃허브에 올라가 있던걸 발견했다인텔리제이에서도 당연히 한글이 깨진 상태였다... 한글만 깨지는 걸로 봐선 인코딩 문제가 분명하다고 생각했고 설정에 들어가 인코디 설정을 확인했습니다IDE 인코딩 설정으로 해결프로퍼티 파일에 대한 디폴트 인코딩이 ISO-8859-1로 되어 있어서 문제가 발생한 걸로 보인다검색해 보니 UTF-8은 거의 모든 문자를 지원하는 반면 ISO-8859-1 인코딩은 한글을 지원하지 않아서 한글 깨짐이 발생한다고 한다간단하게 프로퍼티 파일에 대..

Back-end/Spring 2025.03.29

[Spring] Spring Framework의 정의와 특징에 대해 알아보자 (Ioc,DI,AOP)

Spring Boot (스프링 부트)스프링 프레임워크 (Spring Framework)는 자바 기반의 애플리케이션 프레임워크입니다 엔터프라이즈급 애플리케이션을 개발하기 위한 다양한 기능을 제공 엔터프라이즈급 개발"기업 환경을 대상으로 하는 개발" Spring Boot는 Spring Framework를 기반으로 한 간편하고 신속한 애플리케이션 개발을 위한 도구 Spring Framework (스프링 프레임워크)스프링 프레임워크는 현재 자바에서 가장 많이 사용되는 프레임워크로 알려져 있습니다 우리나라에서는 "전자 정부 프레임워크"의 기반 기술로 공공기관 웹 서비스를 개발하는데 주로 사용됩니다 스프링 프레임워크는 자바로 애플리케이션을 개발하는데 필요한 기능을 제공하고 쉽게 사용할 수 있도록 하는 도구입니다  ..

Back-end/Spring 2024.09.29
반응형