1. 빌더 패턴 (Builder Pattern)객체 생성 시 단계별로 생성 가능하게 도와주는 디자인 패턴객체의 생성 과정을 분리함 ⇒ 다양한 구성요소를 조합하여 객체 생성ex) 이름, 나이, 학년, 과목, 학점 등을 가지는 Person 클래스 ⇒ 이름, 나이만 갖는 객체 / 이름, 나이, 학년만 갖는 객체 등주로 매개변수가 많은 생성자, 불변객체 등을 만들때 유용함 1-1. 빌더 패턴 예제Person.java@ToStringpublic class Person { private String name; private int age; private double grade; // 빌더 사용 생성자 public Person(PersonBuilder builder) { thi..
All Categories
1. 로깅 (logging)애플리케이션의 동작, 오류, 이벤트 등을 기록하는 과정로깅으로 작성된 로그를 통해 개발자가 애플리케이션의 상태를 모니터링하고 문제 진단, 성능 분석 가능주요 목적 : 오류 해결, 보안 감사, 성능 개선 등 1-1. 로그 기록 장소콘솔파일이메일/문자 (SMTP/SMS)DB 1-2. 로깅 레벨패키지나 클래스 별로 로그에 남길 정보의 정도 설정 가능(스프링 부트의 로그 프레임워크인 LogBack 의 로그 레벨) TRACE DEBUG INFO WARN ERROR좌측일수록 상세한 수준 (다음 레벨의 내용 모두 포함) / 우측일수록 중요한 수준ex) DEBUG 로그 : INFO, WARN, ERROR 로그를 모두 포함TRACE : 개발 단계에서 사용, DEBUG 레벨보다 상세한 수준의 로..
1. 테스트1-1. TDD (Test Driven Development)테스트 주도 개발테스트 코드를 먼저 작성 → 작성한 테스트 코드를 통과하게끔 실제 코드 작성하는 개발 방법 TDD 주요 원칙테스트 실패 확인실제 코드를 구현하기 전 테스트 케이스를 작성함요구사항을 테스트로 변환함으로써 명확한 목표 설정 가능!테스트 통과 가능 최소 코드 작성테스트 통과에 꼭 필요한 최소한의 코드만 작성함YAGNI (You Aren’t Gonna Need It) 원칙 적용코드 개선 리펙토링테스트 통과한 최소 코드를 개선함중복 제거, 가독성 향상을 목표 ⇒ 설계가 개선되고 유지보수성이 증가함! 1-2. 테스트 유형1-2-1. 단위 테스트메서드, 클래스와 같이 개별 코드 단위를 검증하는 테스트격리된 환경에서 실행1-2-2...
1. Geocoder API 2.0open weather map 의 현재 날씨 정보 API를 사용하기 위해서는 요청에 위도, 경도를 포함해야 함내 주소 (혹은 날씨를 알고 싶어하는 주소)의 위도, 경도를 알기 위해 사용함 1-1. Geocoder API 사용 방법1-1-1. 회원가입https://www.vworld.kr/v4po_main.do 브이월드국가가 보유하고 있는 공개 가능한 공간정보를 모든 국민이 자유롭게 활용할 수 있도록 다양한 방법을 제공합니다.www.vworld.kr해당 사이트에 접속 후 회원가입 진행 1-1-2. api 인증키 발급상단의 메뉴바 클릭 오픈 API > 인증키발급 클릭 약관 동의 후 이용 정보 작성 (아래는 예시)서비스명 : 날씨 웹 서비스 예제 프로젝트서비스 분류 : 교육서..
1. Jpa Auditing 이란?엔티티에서 발생한 이벤트를 추적하고 기록함이벤트 : 생성(create), 수정(update), 삭제(delete) 등Spring Data JPA 에서 기본적으로 Auditing 정보를 추가하는 기능 제공함 2. Jpa Auditing 주요 기능@CreatedDate엔티티 생성 시간을 자동으로 기록함@CreatedDateprivate LocalDateTime createdAt;@LastModifiedDate엔티티 최종 수정 시간을 자동으로 기록함엔티티 생성 시 생성 시간이 저장됨@LastModifiedDateprivate LocalDateTime editedAt;@CreatedBy엔티티를 생성한 사용자 정보를 자동으로 기록함@CreatedByprivate User crea..
1. JpaRepository 란 ?Spring Data JPA 에서 제공하는 DB접근을 위한 인터페이스JPA 기반으로 DB와의 상호작용을 간편하게 해줌CRUD 작업을 수행하는 메서드를 기본 제공개발자가 직접 구현할 필요 x ! 2. JpaRepository 사용 방법2-1. 라이브러리 추가build.gradleimplementation 'org.springframework.boot:spring-boot-starter-data-jpa' 2-2. Repository 작성JpaRepository를 상속받음JpaRepositoryimport org.springframework.data.jpa.repository.JpaRepository;public interface UserRepository extends J..
0. 사전 지식0-1. HTTP웹 서비스 : 정보 요청, 응답 시 HTTP 사용마찬가지로 스프링도 HTTP 사용 → 데이터 송수신직접 작성이 아닌 스프링에서 제공하는 @ResponseBody, ReseponseEntity 사용해서 응답을 빠르고 쉽게 작성 가능 0-2. @ResponseBodyHTTP 요청의 body 에는 여러 데이터가 존재함이 body의 데이터를 직렬화 해주는 어노테이션직렬화 : 현재의 데이터를 네트워크에서 송/수신 가능하도록 변경하는 것 1. ResponseEntity스프링 프레임워크가 제공하는 클래스HttpEntity 클래스를 상속받음 (+ http 상태코드 포함)HttpEntity : headers와 body로 이루어짐⇒ 사용자의 Http Request에 대한 응답 데이터를 포함!..
1. 트랜잭션한 묶음으로 처리되어야 하는 작업 (SQL 명령문) 들의 집합커밋 (commit)“정상 종료”트랜잭션의 실행 결과를 DB에 최종 반영하는 것롤백 (rollback)트랜잭션의 실행 결과를 반영하지 않고 취소하여 원래 상태로 되돌리는 것⇒ 복수 사용자의 동시 접근성 제어, 장애 발생 시 안정적으로 데이터 복구하기 위해 필요!! 2. 트랜잭션의 ACID 특성Atomicity (원자성)트랜잭션 안의 작업을 모두 성공적으로 완료 or 모두 철회하여 무효화 해야 함 ⇒ 전부 혹은 전무 (All or Nothing) 실행 규칙 적용Consistency (일관성)DB가 트랜잭션 실행 전의 일관된 상태 → 트랜잭션 실행 후 또 다른 일관된 상태 로 전환되어야 함Isolation (고립성)여러 개의 트랜잭..