분류 전체보기
-
[JUnit] JUnit 핵심 (1) 생애주기와 동작원리 / 테스트 클래스와 메서드 / 애노테이션DEV/JUnit 2024. 6. 20. 15:26
TDD 하고싶어서 학습하는 JUnit 프레임워크, 책을 기반으로 학습하고 정리하고자한다. 참고 도서https://www.yes24.com/Product/Goods/126579542 JUnit IN ACTION 3판 - 예스24자바 단위 테스트를 위해 알아야 할 모든 것JUnit은 자바 애플리케이션을 단위 테스트하기 위한 사실상의 표준이다. 자바 개발자에게 JUnit은 이제 필수가 되었다. 특히 JUnit 5에서는 모던 자바(자www.yes24.com 해당 책에서는 JUnit5를 주로 다루고 JUnit4와 비교하는 부분이 있을 것으로 보인다. 샘플 코드https://github.com/devkunst/junit-in-action-third-edition-kr GitHub - devkunst/junit-in..
-
[Git] git 커밋 메시지 규칙DEV/ETC 2024. 6. 12. 00:26
Git 커밋 메시지를 작성할 때는 일관된 규칙을 따르는 것이 중요하다.이는 프로젝트의 유지보수성과 협업의 효율성을 높이는 데 도움이 되며, 나 또한 쉽게 찾아볼수있도록 정리하고자한다. 다음은 일반적으로 많이 사용되는 Git 커밋 메시지 규칙이다.1. 커밋 메시지 구조: 2. 커밋 메시지 타입타입은 커밋의 목적을 명확하게 나타내며, 다음과 같은 타입이 자주 사용된다.feat: 새로운 기능 추가fix: 버그 수정docs: 문서 변경style: 코드 포맷팅, 세미콜론 누락 등 코드 변경이 없는 경우refactor: 코드 리팩토링 (기능 변경 없음)test: 누락된 테스트 추가 또는 기존 테스트 수정chore: 빌드 프로세스 또는 보조 도구 수정 (라이브러리 추가 등)perf: 성능 향상 관련 변경build:..
-
[JAVA] Java Record 란?DEV/JAVA 2024. 6. 5. 01:41
Record란?변경이 불가한 데이터 객체를 쉽게 만들 수 있도록 해준다. 클래스보다 간결하고 효율적으로 데이터 객체를 생성할 수 있도록 설계되었다. Java14에서 preview로 나왔고 Java16에서 정식기능으로 포함되었다. 목표데이터를 간결하게 표현하기 위한 방법 제공개발자가 불변 데이터를 모델링하는데 집중하도록 함데이터 지향 메서드를 자동으로 구현특징간결성 : 필드를 정의하면 해당 필드를 기반으로 자동으로 메서드가 생성되어 코드의 양을 줄일 수 있고, 불필요한 보일러플레이트 코드를 줄여 가독성을 높여준다.메서드 자동 생성 : 필드를 기반으로 equals(), hashCode(), toString() 메서드를 자동으로 생성한다.생성자 자동 생성 : 필드를 기반으로 자동으로 생성자를 생성한다. (기본..
-
[Architecture] 헥사고날 아키텍처(Hexagonal Architecture) (ft. 계층형 아키텍처, 클린 아키텍처, DDD)DEV/ETC 2024. 6. 5. 00:12
헥사고날 아키텍처를 설명하기전에 계층형 아키텍처와 클린 아키텍처, 그리고 도메인 주도 설계(DDD)관련하여 가볍게 짚고 넘어가야한다. 헥사고날 아키텍처는 전통 방식인 계층형 아키텍처의 단점을 보완하기위해 설계되었다. 계층형 아키텍처의 문제점1) 데이터베이스, 영속성에 대한 의존성도메인 계층이 데이터베이스에 의존하게 되어 데이터베이스에 변화가 일어나면 도메인 계층에도 변화가 생긴다.서비스 계층에서도 영속성 모델을 도메인 모델처럼 사용하게 된다. 그렇다면 즉시로딩, 지연로딩, 트랜잭션, 플러시 등을 고려해야하고 영속성에 대한 의존이 프로젝트 전체적으로 퍼지게 되어 변경에 취약해진다. 2) 아키텍처 경계를 강제할 수 없다.계층형 아키텍처에서는 상위 계층에 있는 컴포넌트에 접근할 목적으로 해당 컴포넌트를 하위 ..
-
[JPA] 값 타입 (엔티티 타입과 비교 / 기본값타입 / 임베디드타입 / 컬렉션 값타입)DEV/JPA 2024. 6. 1. 18:35
* 정보전달의 목적이 아닌 개인 스터디 정리 글 입니다. 강의 : 인프런 교육자 : 김영한JPA 데이터 타입엔티티 타입- @Entity로 정의한 객체- 데이터가 변해도 식별자로 추적 가능ex) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 값 타입- int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체- 식별자가 없고 값만 있어 값 변경시 추적 불가ex) 숫자 100을 200으로 변경하면 다른값으로 대체됨 1. 기본값 타입: 생명주기를 엔티티에 의존하며 값 타입은 공유하여 사용할 수 없음- 자바 기본 타입 (int, double)- 래퍼 클래스 (Integer, Long)- String 2. 임베디드 타입 (복합 값 타입): 새로운 값 타입을 직접 정의할 ..
-
[Architecture] MA와 MSA 개념 / 장단점 / 차이점DEV/ETC 2024. 5. 30. 16:11
MA : Monolithic Architecture모놀리식 아키텍처는 단일 코드 베이스의 애플리케이션이다.전체 애플리케이션은 단일 코드로 작성되어 단일 데이터베이스에 연결된다.보편적으로 많이 사용되는 방식으로 마이크로서비스 아키텍처보다 구현이 쉽고, 덜 복잡하다는 장점이 있다. 장점주로 단일코드 베이스, 단일 애플리케이션에서 나오는 장점을 갖고 있다.단순성간편한 배포보편성쉬운 디버깅쉬운 테스트 (ft. E2E 테스트)쉬운 모니터링단점큰 규모에서는 유지보수가 어려움유연하지 않은 확장성 : 일부 확장이 어렵고 전체적인 확장만 가능대규모 팀 작업의 어려움 : 동일한 코드와 환경에서 작업하기때문에 충돌 가능성이 높고 다른 기능에 영향을 줄수있음기술 유연성 낮음 : 다른 기술로 변경하는것에 어려움이 있기 때문에 ..
-
[JWT] JSON WEB TOKEN 개념 / 구성 요소 / 동작 방식 / 장단점 / Session과 차이점 / 저장 위치DEV/ETC 2024. 5. 30. 15:04
JWT란?JSON WEB TOKEN의 약자로 속성 정보 (Claim)를 JSON 데이터 구조로 표현한 토큰으로서 네트워크를 통해서 서로 다른 장치끼리 안전하게 전송하기 위해 설계됨구성 요소JWT는 세 파트로 나누어지며, 각 파트는 점으로 구분하여 표현된다.헤더 (Header), 페이로드 (Payload), 서명 (Sinature)으로 구성된다. 1) header : 해시 암호화 알고리즘과 토큰의 타입으로 구성첫 번째는 HMAC, SHA256 또는 RSA와 같은 서명 생성에 사용된 해시 알고리즘두 번째는 토큰의 유형 (JWT)2) payload : 내용, 즉 토큰에 담을 클레임(claim) 정보를 포함Payload 에 담는 정보의 한 ‘조각’ 을 클레임이라고 부르며, name / value 의 한 쌍으로 ..
-
[Spring] Bean Life Cycle / Scope / Profiles / ApplicationContextDEV/Spring 2024. 5. 17. 15:52
📌Bean의 Life CycleBean Life cycle 이란 객체가 언제 어떻게 생성되어 소멸되기 전까지 어떤 작업을 수행하고 언제, 어떻게 소멸되는지 일련의 과정을 이르는 말이다.Bean의 생명주기는 스프링 컨테이너에 의해 관리된다.Spring의 Bean은 Java 또는 XML bean 정의를 기반으로 IoC 컨테이너가 시작될 때 인스턴스화 되어야 한다.빈의 초기화와 소멸 전 실행되길 원하는 코드가 있다면 init(), destroy() 메서드에 사용자 정의가 가능하다.Spring Bean Life Cycle 프로세스스프링 컨테이너 시작스프링 빈 인스턴스 생성의존성 주입초기화 콜백 : 빈이 생성되고, 빈의 의존관계 주입이 완료된 후 호출사용소멸전 콜백 :빈이 소멸되기 직전에 호출스프링 종료- Sp..