백엔드 공부/Spring 5

Spring에서 HTTP 요청이 들어오면 처리되는 전체적인 흐름

들어가며Spring 어플리케이션 서버에서 HTTP 요청을 어떻게 처리하는지 흐름을 알고 계신가요? 이 글은 전체적인 작동 구조에 대해 공부하여 작성해보았습니다. 요청 처리 과정1) 요청이 웹 어플리케이션 서버에 도착 (Tomcat)클라이언트(브라우저, 모바일 앱 등)가 HTTP 요청을 보낼 때, Spring Boot 애플리케이션이 실행 중이라면 Tomcat 내장 웹 어플리케이션 서버가 요청을 받아줍니다.  📝  요청 예제GET /api/user/1 HTTP/1.1Host: example.comAuthorization: Bearer some_token  ✏️  웹 어플리케이션 서버의 역할요청을 받을 준비 (포트 8080 등)Servlet Container에게 요청 전달2) FilterChain이 요청을 ..

[Spring+MongoDB]한 컬렉션에서 중복된 필드값 검증하기(feat. 고유 인덱스)

들어가며안녕하세요. 현재 "모아동"이라는 부경대학교 소속 동아리를 안내해 주는 서비스를 개발하고 있습니다.Spring + MongoDB 기반으로 동아리 담당자 쪽 회원 가입 기능 개발에서 "한 컬렉션에서 중복된 필드값이 들어가는 문제"에 막혀 헤매다가 해결하게 되어 글을 쓰게 되었습니다.문제 상황public class User implements UserDetails { ... @NotNull @Email @Size(min = 5, max = 50) private String email; ...}  이메일 필드는 같은 컬렉션 내에서 중복이 되지 않기를 원했습니다. 해결 과정단순히 구현한다면 find로 컬렉션 내에 이메일이 존재하는지 파악을 하고나서 있으면 save..

[Spring+MongoDB]엔티티의 기본값이 DB에 저장되지 않은 문제

들어가며안녕하세요. 현재 "모아동"이라는 부경대학교 소속 동아리를 안내해주는 서비스를 개발하고 있습니다.Spring + MongoDB 기반으로 동아리 담당자 쪽 회원 가입 기능 개발에서 "엔티티의 기본 값이 DB에 저장되지 않은 문제"가 발생했습니다.문제 상황User (Entity)@Entity@Builder@Getter@AllArgsConstructor@NoArgsConstructor@Document(collection = "user")public class User implements UserDetails { @Id private String id; @NotNull @Email @Indexed(unique = true) @Size(min = 5, max = 50) ..

[Spring 공식문서 정리하기] Resource 관리

🌱 해당 포스트는 한걸음 스터디에서 발표한 내용입니다. 발표 내용을 아래 영상에서 확인하실 수 있습니다.🌱한걸음은 각자 학습한 내용을 토대로 블로그 글을 작성하고, 대면으로 모여서 발표하며, 녹화해 유튜브에 업로드하는 스터디입니다.한걸음 알아보기들어가며Spring 어플리케이션을 개발하다 보면 필연적으로 Resource 관리를 만나게 됩니다.대표적으로 resources 패키지안에 있는 application.properties 파일도 Resource라고 할 수도 있고 외부의 파일들을 업로드하는 경우도 있습니다.스프링에선 이를 어떻게 개발자가 쉽게 활용할 수 있도록 제공하는지 알아보겠습니다. Resource Interface로우 레벨인 리소스들을 개발자가 쉽게 사용할 수 있게 하는 가장 쉬운 방법은 추상화..

[Spring 공식문서 정리하기] Spring IoC Container와 Beans(Feat. 의존성 주입(DI))

🌱 해당 포스트는 한걸음 스터디에서 발표한 내용입니다. 발표 내용을 아래 영상에서 확인하실 수 있습니다.  🌱한걸음은 각자 학습한 내용을 토대로 블로그 글을 작성하고, 대면으로 모여서 발표하며, 녹화해 유튜브에 업로드하는 스터디입니다.한걸음 자세히 알아보기들어가기 앞서 Spring에서 MVC 패턴으로 개발할 때, 흔히 Controller, Service, Repository 등을 만들곤 합니다.그리고 이 그림 1처럼 클래스 명 위에 어노테이션 하나만 딱 달아두면 Main Application 클래스에서 Run 하면 알아서 서버가 돌아갑니다. 하지만, 자바에서 객체를 생성할 때 어떻게 하나요??  그림 2처럼 new 키워드를 사용해 객체를 생성하죠. 우리는 Spring으로 개발할 때, 따로 Main A..