Spring 81

[📙 숙련 Spring] 2-4. Filter

📙 목차공통 관심 사항(cross-cutting concerns)Servlet FilterServlet Filter 구현 방법Servlet Filter 구현 및 등록 예제[실습]1. 공통 관심사(cross-cutting concerns)공통 관심사(cross-cutting concerns, 횡단 관심사 )비즈니스 로직과는 별개로 여러 기능에서 공통적으로 필요한 처리 로직여러 클래스나 모듈에서 반복적으로 사용되는 부가적인 기능 비즈니스 로직에 직접 넣으면 중복 코드, 관심사 분리 실패, 유지보수 어려움 등의 문제가 발생한다. ex. 인증, 인가, 로깅, 인코딩 처리 등@PostMapping("/post")public PostResponseDto create(PostCreateRequestDto reque..

Spring/강의 2025.05.20

[📙 숙련 Spring] 2-3. Token, JWT(JSON Web Token)

📙 목차TokenAccess Token, Refresh TokenJWT(JSON Web Token)JWT 사용 간단 예제1. TokenToken (토큰)사용자의 신원을 증명하거나 권한을 부여하기 위해 발급되는 디지털 증명서 같은 문자열주로 인증(Authentication)과 인가(Authorization) 과정에서 사용된다.토큰은 보통 암호화되어 안전하게 정보를 담고 있으며, 만료시간이 설정되어 있다.대표적인 예, JWT(JSON Web Token) Token 동작 순서서버가 사용자 로그인 후 고유한 토큰을 생성해 클라이언트에게 전달한다.서버가 아닌 클라이언트에 저장되어 서버의 부담을 덜 수 있다.클라이언트는 이후 요청 시 이 토큰을 함께 보내어 서버가 사용자를 식별하고 권한을 확인할 수 있게 한다. ..

Spring/강의 2025.05.16

[📙 숙련 Spring] 2-2. Cookie, Session

📙 목차CookieCookie 사용 예제SessionSession 사용 예제 1 - ServletSession 사용 예제 2 - Spring1. CookieCookie (쿠키)웹 서버가 사용자의 웹 브라우저에 저장하는 작은 데이터 조각클라이언트와 서버 간의 상태 정보를 유지하거나 추적하기 위해 사용된다. Cookie 특징사용자의 상태 정보(예: 로그인 정보, 설정 값 등)를 클라이언트 측에 저장한다.HTTP가 기본적으로 상태 비저장(stateless)이기 때문에, 상태 유지를 위해 사용한다.서버가 응답 헤더에 Set-Cookie를 보내면, 브라우저가 이를 저장하고 이후 요청 시 Cookie 헤더로 함께 전송한다. Cookie 기본 구조 (HTTP Header 기준)Set-Cookie: =; ; ; ....

Spring/강의 2025.05.16

[📙 숙련 Spring] 2-1. 인증과 인가

📙 목차인증과 인가Cookie vs Session vs JWT1. 인증과 인가인증(Authentication)사용자가 누구인지 신원을 확인하는 과정이다.주로 아이디, 비밀번호, 생체 정보 등을 통해 사용자의 신원을 검증한다.ex, 로그인 인가(Authorization)인증이 완료된 사용자에게 어떤 권한이 있는지 확인하는 과정이다.즉, 사용자가 어떤 자원이나 기능을 사용할 수 있는지를 결정한다.ex, 회원만 조회 가능한 게시글, 본인이 작성한 게시글 수정 인증 = 누구인가?인가 = 무엇을 할 수 있는가?2. Cookie vs Session vs JWT이후 정리에서 나올 쿠키, 세션, JWT 에 대한 간략 정리구분 쿠키 (Cookie) 세션 (Session) JWT (JSON Web Token) 저장..

Spring/강의 2025.05.16

[📙 숙련 Spring] 1-3. Validation과 Bean Validation

📙 목차ValidationBindingResult Bean ValidationBean Validation 사용 예제 1 - 기본 흐름Bean Validation 사용 예제 2 - 글로벌 예외 처리Bean Validation 사용 예제 3 - 그룹별 검증 조건(groups)1. ValidationValidation - 검증특정 데이터(주로 클라이언트의 요청 데이터)의 값이 유효한지 확인하는 절차잘못된 데이터의 유입을 방지하여 시스템의 신뢰성과 안정성을 확보하는 핵심 과정이다.Controller의 주요한 역할 중 하나는 Validation 이다. HTTP 요청이 정상인지 검증한다. Validation의 역할 사용자에게 입력 오류에 대한 명확한 피드백을 제공한다.오류 발생 시에도 시스템이 정상적으로 동작하..

Spring/강의 2025.05.15

[📙 숙련 Spring] 1-2. Spring Bean 등록

📙 목차Spring Bean 등록Spring Bean 등록 2의존관계 주입1. Spring Bean 등록Spring에서 객체를 Bean으로 등록하는 방법은 크게 두 가지가 있다.자동 등록 - @Component 기반수동 등록 - @Configuration, @Bean 기반* Spring에서는 기본적으로 자동 등록을 사용하며, 특정 상황에서만 수동 등록을 사용한다. 자동 등록 - @Component 기반Spring은 @ComponentScan을 통해 특정 패키지를 스캔한다.해당 패키지 내의 클래스 중 @Component, @Service, @Repository, @Controller 등의 어노테이션이 붙은 클래스를 자동으로 Bean으로 등록한다.등록된 클래스는 클래스 이름의 앞글자를 소문자로 바꿔 Be..

Spring/강의 2025.05.15

[📙 숙련 Spring] 1-1. 객체 지향과 Spring 핵심 개념

📙 목차SOLID 원칙Spring과 객체 지향 (IoC, DI) Spring의 핵심 개념 (Spring Container, Spring Bean)싱글톤(Singleton)1. SOLID 원칙SOLID 원칙객체 지향 설계에서 소프트웨어의 유지보수성, 확장성, 유연성을 높이기 위한 5가지 기본 설계 원칙 SOLID 원칙의 종류단일 책임 원칙 SRP(Single Responsibility Principle)개방 폐쇄 원칙 OCP(Open Closed Principle)리스코프 치환 원칙 LSP(Liskov Substitution Principle)인터페이스 분리 원칙 ISP(Interface Segregation Principle)의존관계 역전 원칙 DIP(Dependency Inversion Princip..

Spring/강의 2025.05.15

Caused by: java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName.

전체 에러Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jdbcMappingContext' defined in class path resource [org/springframework/boot/autoconfigure/data/jdbc/JdbcRepositoriesAutoConfiguration$SpringBootJdbcConfiguration.class]: Unsatisfied dependency expressed through me..

다중 데이터소스 설정 하기 (feat. DB 여러 개 연결하기)

환경Java 17Spring Boot 3.xMySQLspring-boot-starter-jdbc 사용1. application.properties 설정 꼭 jdbc-url로 적어야 한다.단일 DB 쓸 땐 url도 되지만, 다중 설정에서는 오류난다.# 첫 번째 DB (기본)spring.datasource.todo.jdbc-url=jdbc:mysql://localhost:3306/todospring.datasource.todo.username=rootspring.datasource.todo.password=1234spring.datasource.todo.driver-class-name=com.mysql.cj.jdbc.Driver# 두 번째 DBspring.datasource.todo-v2.jdbc-url=j..

Spring/문법 2025.05.12

406 Not Acceptable - responseDTO @Getter 의 중요성

일정 관리 앱 만들기 프로젝트를 진행하면서만든 첫 API 를 테스트 하던 중 에러 상황이 발생했다. DB에 데이터는 잘 저장됐는데,,,잘못된 응답이 반환되었다. 406 Not Acceptable 콘솔 에러:Resolved [org.springframework.web.HttpMediaTypeNotAcceptableException: No acceptable representation]일단 콘솔 에러에 적힌 메시지를 서치 해봤다. 요약하면 이러한데org.springframework.web.HttpMediaTypeNotAcceptableException: No acceptable representation 예외는 클라이언트가 서버에서 처리할 수 없는 Accept 헤더를 포함한 요청을 보낼 때 발생합니다.클라이..