SEB_BE_45/공부 정리


🧑🏻💻 TIL(Today I Learned) ✔️ Spring Security의 인증 처리 흐름, 인증 컴포넌트 💡 Spring Security의 인증 처리 흐름 ➡️ Spring Security에서는 Spring Security Filter Chain을 통해 보안을 위한 특정 작업을 처리함 ➡️ 사용자의 인증 요청이 Spring Security Filter Chain의 특정 Filter에 도달했을 때 Spring Security의 컴포넌트들이 어떤 과정을 거쳐 사용자의 인증 요청을 처리하는지 흐름 이해하기 사용자가 로그인 폼 등을 이용해 로그인 ID와 Password를 포함한 Request를 Spring Security가 적용된 애플리케이션에 전송 → 사용자의 로그인 요청이 Spring Securit..


🧑🏻💻 TIL(Today I Learned) ✔️ 애플리케이션 빌드/실행/배포 실습 💡 애플리케이션 빌드 ➡️ 애플리케이션을 서버 환경에서 실행 가능하게 하기 위해서는 Gradle이나 Maven 같은 빌드 툴을 이용해서 Spring Boot 기반의 애플리케이션 소스 코드를 빌드해야 함 ✔️ IntelliJ IDE를 이용한 빌드 Gradle 윈도우 탭 클릭 프로젝트 이름 - Tasks - build 에서 :bootJar 또는 build 더블 클릭 빌드가 정상적으로 종료되면 위 사진과 같이 build/libs 디렉토리에 jar 파일이 생성됨 → jar 파일은 로컬 PC에서 실행 가능한 애플리케이션 실행 파일 :build 와 :bootJar 의 차이 → :build task를 실행할 경우 :assemble,..


🧑🏻💻 TIL(Today I Learned) ✔️ Asciidoc, API 문서화 실습 💡 Asciidoc ➡️ Spring Rest Docs를 통해 생성되는 텍스트 기반 문서 포맷 ➡️ 이 포맷을 사용하여 메모, 문서, 기사, E-Book, 웹 페이지, 매뉴얼 페이지, 블로그 게시물 등을 작성할 수 있으며 HTML, PDF, EPUB, 매뉴얼 페이지를 포함한 다양한 형식으로 변환될 수 있음 ➡️ 기술 문서 작성을 위해 설계된 가벼운 마크업 언어 🔎 Asciidoc 문법 ✔️ 목차 구성 = 커피 주문 애플리케이션 :sectnums: :toc: left :toclevels: 4 :toc-title: Table of Contents :source-highlighter: prettify Hong Gil Do..


🧑🏻💻 TIL(Today I Learned) ✔️ API 문서화, Spring Rest Docs 💡 API 문서화(Documentation) ➡️ 클라이언트가 REST API 백엔드 애플리케이션에 요청을 전송하기 위해서 알아야 되는 요청 정보(요청 URL(또는 URI), request body, query parameter 등)를 문서로 잘 정리하는 것을 의미함 API 요청을 위해 필요한 정보들을 문서로 잘 정리해야 하는 이유는? : 만들어 놓은 REST API 기반의 백엔드 애플리케이션을 클라이언트 쪽에서 사용하려면 API 사용을 위한 어떤 정보가 필요하기 때문에 ※ API 사용을 위한 어떤 정보가 담겨 있는 문서를 "API 문서 또는 API 스펙(사양, Specificatin)"이라고 함 🔎 API..


🧑🏻💻 TIL(Today I Learned) ✔️ Mockito, TDD 💡 Mock이란? ➡️ 테스트 세계에서의 Mock이란 가짜 객체를 의미, 단위 테스트나 슬라이스 테스트 등에 Mock 객체를 사용하는 것을 Mocking이라고 함 Mock-up(목업) : 실제 제품이 나오기 전에 내부적으로 사용하기 위한 모형(가짜) 제품 의미 🔎 테스트에서 Mock 객체를 사용하는 이유 Mock 객체를 사용하지 않은 슬라이스 테스트 프로세스 MemberControllerTest의 postMemberTest() 실행 시 테스트 실행 흐름은 아래와 같음 하지만 MemberControllerTest 클래스는 완전한 슬라이스 테스트라고 보기 어려움 → postMember() 핸들러 메서드 쪽만 테스트 해야 하는데 서비스..

🧑🏻💻 TIL(Today I Learned) ✔️ Hamcrest, Slice Test 💡 Hamcrest ➡️ JUnit 기반의 단위 테스트에서 사용할 수 있는 Assertion Framework 🔎 사용하는 이유? Assertion을 위한 매쳐(Matcher)가 자연스러운 문장으로 이어지므로 가독성이 향상됨 테스트 실패 메세지를 이해하기 쉬움 다양한 Matcher를 제공 ➡️ 위와 같은 이유로 Assertion 메서드보다 더 많이 사용됨 🔎 Hamcrest Assertion 적용해 보기 ✔️ JUnit에서의 Assertion import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import static org.ju..


🧑🏻💻 TIL(Today I Learned) ✔️ 단위 테스트, JUnit 💡 테스트(Test) 테스트를 해야 되는 이유? : 테스트를 제대로 잘 거쳐서 데스트 대상이 검증 과정에 잘 통과하게 만들어 최대한 더 나은 결과를 얻기 위해서 ➡️ 우리는 이미 학습을 진행하면서 애플리케이션에 대한 테스트를 진행하고 있었음 ➡️ 어떻게? 예제 코드를 직접 타이핑하고 애플리케이션을 실행하고 Postman으로 HTTP 요청을 전송해서 기대하던 JSON 응답 결과가 출력되는지 확인하는 것으로 (Java 기반의 애플리케이션 테스트) ➡️ 하지만 애플리케이션 전체가 아니라 각 계층별로 따로 테스트를 하고 싶을 때, 비즈니스 로직에서 구현한 특정 메서드만 테스트하고 싶을 때는 위와 같이 테스트하는 것은 비효율적이고 번거로..


🧑🏻💻 TIL(Today I Learned) ✔️ 트랜잭션(Transaction) 💡 트랜잭션(Transaction)? ➡️ 여러 개의 작업들을 하나의 그룹으로 묶어서 처리하는 단위 ➡️ 물리적으로는 여러 개의 작업, 논리적으로는 하나의 작업으로 인식 예를 들어서 A의 5000을 B에게 계좌이체를 한다고 했을 때 A의 잔고는 5000원 감소, B의 잔고는 5000원 증가해야 함 위의 예시처럼 계좌이체라는 거래는 2가지 작업이 합쳐져서 하나의 작업으로 동작해야 함 만약 둘 중 하나가 문제가 생겨 실패한다면 심각한 문제가 발생한다. ➡️ 전부 성공하든가 전부 실패하든가(All or Nothing)의 둘 중 하나로만 처리되어야 함 : 이러한 트랜잭션 처리 방식은 애플리케이션에서 사용하는 데이터의 무결성을 보..


🧑🏻💻 TIL(Today I Learned) ✔️ JPA?, 엔티티 매핑 💡 JPA(Java Persistence API)란? ➡️ Java에서 사용하는 ORM(Object Relational Mapping) 기술의 표준 사양(명세, Specfication) ➡️ 표준 사양은 Java의 인터페이스로 사양이 정의되어 있기 때문에 JPA라는 표준 사양을 구현한 구현체는 따로 있다는 것 의미 표준 사양 : 특정 분야에서 사용되는 기술, 프로토콜, 언어 또는 인터페이스 등의 표준화된 명세 : 해당 분야의 다양한 기술 및 구현체들이 상호 운용성을 가질 수 있도록 일관된 규칙과 규격 제공하며 호환성을 확보하고 개발자들 간의 협업을 용이하게 함 🔎 Hibernate ORM ➡️ JPA에서 정의해 둔 인터페이스를 구..