1. 레코드(record)란?자바 16부터 정식으로 도입레코드는 데이터 중심의 클래스를 보다 간결하게 정의할 수 있도록 설계되었음불변 객체를 쉽게 만들 수 있고, 자동으로 생성자, 접근자(getter), equals(), hashCode(), toString() 메서드를 제공함레코드는 상속을 할 수 없고, 멤버 변수는 private final로 정의됨 롬복 + 애노테이션 조합도 좋다고 생각했는데, 이 보다 간결해질 수 있다니!! >.이번 개인 프로젝트를 진행할 때, DTO에 이 레코드를 적용하면 좋을 것 같다는 생각이 들었다. 2. DTO에 적용하기우선, 레코드를 적용한 코드를 살펴보자!MovieDefaultDto는 Movie 엔티티를 직접 노출*하는 대신에 DTO로 변환하여 사용하기 위해 만들어졌다. ..
Git 커밋 메시지를 잘 쓰려고 노력해야 하는 이유더 좋은 커밋 로그 가독성더 나은 협업과 리뷰 프로세스더 쉬운 코드 유지보수그 외에도 CHANGELOG들을 자동으로 생성하고, 빌드와 배포 프로세스를 트리거하는 등의 역할을 할 수도 있다. 좋은 커밋 메시지를 작성하는 방법은 여러 가지가 있겠지만, Angular Commit Guidelines에 기반을 둔 Conventional Commits 1.0.0과 가장 유명한 Udacity의 Git 커밋 메시지 컨벤션을 정리해 보고 추가로 메모해두고 싶은 내용들을 작성해 보았다. Conventional Commits 1.0.0 Conventional CommitsA specification for adding human and machine readable mea..
[아키텍쳐] 패키지 구조 : 계층형 VS 도메인형 어떤 것을 선택할까?🎯 0. 들어가기 전 MVC 패턴 & 자바 기반의 콘솔 애플리케이션에서는 관성적으로 model(domain) & controller & view 패키지를 만들고 시작하는 경우가 대부분이었다. 웹 애플리케이션을 구현하면서, 설계ksh-coding.tistory.com 'Architecture' 카테고리의 글 목록🏃 Anything steady and consistentlyjaime-note.tistory.com Spring Guide - Directory - Yun Blog | 기술 블로그Spring Guide - Directory - Yun Blog | 기술 블로그cheese10yun.github.io 프로젝트 구조 변경: Laye..
1. 아키텍처(architecture)란?소프트웨어 시스템의 아키텍처란, 시스템을 구축했던 사람들이 만들어낸 시스템의 형태이다.그 모양은 시스템을 컴포넌트로 분할하는 방법, 분할된 컴포넌트를 배치하는 방법, 컴포넌트가 서로 의사소통하는 방식에 따라 정해진다.그리고 그 형태는 아키텍처 안에 담긴 소프트웨어 시스템이 쉽게 개발, 배포, 운영, 유지보수될 수 있도록 만들어진다. 우리는 흔히 '설계'한다고 하지만, 설계와 아키텍처의 경계는 명확히 구분할 수 없다. 아키텍처는 고수준의 무언가를, 설계는 저수준의 구조 또는 결정사항을 의미할 때가 많지만 실제 아키텍트가 하는 일을 살펴보면 이러한 구분은 무의미하다. 2. 아키텍처의 종류들레이어드 아키텍처(Layered architecture)헥사고날 아키텍처(Hex..
1. RESTful이란?ChatGPT한테 'RESTful의 의미를 알려줘'라고 물어봤을 때의 답변 역시...똑똑하군... RESTful은 "Representational State Transfer"의 약자인 REST의 원칙을 따르는* 웹 서비스 디자인 패턴을 의미합니다. REST는 웹의 아키텍처 스타일 중 하나로, 클라이언트와 서버 간의 통신을 간단하고 확장 가능하게 만드는 것을 목표로 합니다. RESTful 웹 서비스는 이러한 REST 원칙을 구현하여 자원(리소스)을 표현하고 조작하는 방식을 따릅니다. * '따르는'에 집중해보자! REST의 주요 개념과 원칙은 다음과 같습니다: 자원(Resource) 중심: 웹 서비스의 모든 것은 자원으로 간주됩니다. 자원은 URI(Uniform Resource Ide..
📢 안내강의 관련 게시물은 현재 비공개 상태입니다.실습 프로젝트https://github.com/happyprogfrog/spring-basic 섹션 0. 강의 소개강의 소개 & 강의 자료 스프링 핵심 원리 - 기본편 | 김영한 - 인프런김영한 | 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., 스프링 핵심 원리를 이해하고, 성장하는 백엔드 개발자가 되어보www.inflearn.com 키워드IoC (Inversion of Control, 제어의 역전)DI (Dependency Injection, 의존관계 주입)컨테이너SOLIDSRPOCPDIP다형성스프링의 핵심 가치는 "객체 지향 프로그래밍"에 있다. 커리큘럼객체 지향 설계와 스프링스프..
📢 안내강의 관련 게시물은 현재 비공개 상태입니다.실습 프로젝트https://github.com/happyprogfrog/leafy 섹션 0. 강의 소개강의 소개 & 강의 자료 개발자를 위한 쉬운 도커 | 데브위키 - 인프런데브위키 | 현업 개발자가 도커를 사용한 경험을 녹여낸 새로운 커리큘럼으로 기존 교재 및 강의와 차별된 강의를 제공합니다. 단순한 명령어 사용법이 아닌 도커를 왜 사용해야하는지 대한 근www.inflearn.com 섹션 1. 가상화 기술애플리케이션 서버가상화기술과 하이퍼바이저 가상화컨테이너 가상화도커컨테이너 실행👉 https://progfrog.tistory.com/32 섹션 2. 이미지와 컨테이너이미지이미지와 컨테이너이미지의 메타데이터컨테이너의 라이프사이클👉 https://pr..
개념일반적으로 프로그램의 흐름은 main() 메서드와 같이 프로그램이 시작되는 지점에서 다음에 사용할 오브젝트를 결정하고, 결정한 오브젝트를 생성하고, 생성한 오브젝트에 있는 메서드를 호출하고, 그 오브젝트 메서드 안에서 다음에 사용할 것을 결정하고 호출하는 식의 작업이 반복된다. 즉, 오브젝트가 능동적으로 자신이 사용할 클래스를 결정하고, 언제 어떻게 그 오브젝트를 만들지를 스스로 관장하는 모든 종류의 작업을 사용하는 쪽에서 제어하는 구조이다. 제어의 역전이란 이런 제어 흐름의 개념을 거꾸로 뒤집는 것이다. 제어의 역전에서는 오브젝트가 자신이 사용할 오브젝트를 스스로 선택하지 않는다. 당연히 생성하지도 않는다. 또 자신이 어떻게 만들어지고 어디서 사용되는지를 알 수 없다. 모든 제어 권한을 자신이 아닌..