Backend 11

[아키텍쳐 패턴] MVC 패턴

1. MVC란? MVC는 사용자 인터페이스를 개발할 때 일반적으로 사용되는 디자인 패턴이다 Model View Controller 2. 구성요소 1) Model 데이터 구조와 비즈니스 로직을 나타낸다. 데이터베이스와 통신하며 데이터가 변경될 때마다 뷰를 업데이트한다. 뷰와 바로 통신하는 것은 아니라 뷰의 옵저버 혹은 컨트롤러에 전달하여 뷰를 업데이트한다. 2) View 애플리케이션의 UI를 나타낸다. 모델에서 사용자에게 데이터를 표시하고 사용자 명령을 컨트롤러로 전송한다. 3)Controller 입력을 받아 모델 또는 뷰에 대한 명령으로 변환한다. 3. 단계 1) 사용자가 View와 상호 작용한다. 2) View는 사용자 명령을 Controller로 전송한다. 3) Controller는 사용자 데이터를 ..

Backend/Springboot 2023.10.29

TDD 방법론

1. TDD란? TDD는 실제 코드를 작성하기 전에 테스트를 먼저 작성하는 소프트웨어 개발 방법론이다. 요구사항이 잘 정의되어 있고 코드가 해당 요구사항을 충족하는지 확인하여 소프트웨어 품질을 향상시킨다. 2. 기본 원칙 1) RED : 실패한 테스트를 작성한다. 2) GREEN : 테스트를 통과하도록 코드를 작성한다. 3) REFACTOR : 테스트가 통과하는 것을 확인하면서 코드를 리팩토링한다. 3. 단계 1) 요구 사항 이해하기 : 테스트를 작성하기 전에 달성해야 할 요구 사항을 이해한다. 2) 실패 테스트 작성하기 : 특정 요구 사항에 대한 테스트를 작성한다. 이 테스트는 기능이 아직 구현되지 않았으므로 실패해야 한다. 3) 기능 구현 : 테스트를 통과하는 데 필요한 최소한의 코드를 작성한다. 이..

Backend/Springboot 2023.10.29

AssertJ Core 가이드

공식 문서 https://assertj.github.io/doc/#assertj-overview를 번역하며 필요한 부분을 정리한 가이드이다. 1. AssertJ란 무엇인가? assertion과 유용한 오류 메시지를 제공하는 자바 라이브러리이다. 테스트 코드의 가독성을 높이고 IDE에서 매우 쉽게 사용될 수 있도록 고안되었다. // entry point for all assertThat methods and utility methods (e.g. entry) import static org.assertj.core.api.Assertions.*; // basic assertions assertThat(frodo.getName()).isEqualTo("Frodo"); assertThat(frodo).isNot..

Backend/Springboot 2023.10.29

JUnit5 User Guide 번역

본인은 Java의 환경에서 IntelliJ툴을 사용한다. 따라서 이 외의 환경에 해당하는 부분은 정리하지 않았다. 1. Overview 1.1 JUnit5 JUnit5 = JUnit Platform + JUnit Jupiter + JUnit Vintage 1. JUnit Platform 테스트 프레임워크를 JVM에서 실행하기 위한 기반을 제공 TestEngine(테스트를 발견, 실행하고 결과를 보고하는 역할) API를 지원하여 JUnit5 생태계 내에서 다른 테스팅 라이브러리와 프레임워크를 사용할 수 있게 함. /* * Copyright 2015-2023 the original author or authors. * * All rights reserved. This program and the accomp..

Backend/Springboot 2023.10.28

객체지향 5원칙 - S.O.L.I.D

이전 포스트인 '객체지향 생활체조'에 이어 객체 지향의 5원칙에 대해서 알아보려고 한다. 2023.10.22 - [Backend/Springboot] - 예시로 보는 객체지향 생활체조 예시로 보는 객체지향 생활체조 객체지향 생활체조란? 좋은 객체 지향 디자인을 하기 위한 9가지 규칙 유지 관리가 용이하고 가독성이 높으며 테스트 가능한 코드를 만드는 것을 목표 1. 한 메소드에 한 단계의 들여쓰기만 한다 castlehi.tistory.com 객체지향의 5원칙은 다음과 같다. 1. SRP : 단일 책임 원칙 2. OCP : 개방 - 폐쇠 원칙 3. LSP : 리스코프 치환 원칙 4. ISP : 인터페이스 분리 원칙 5. DIP : 의존성 역전 원칙 5가지의 앞글자를 따서 SOLID라고 부른다. 1. SRP ..

Backend/Springboot 2023.10.28

JDK 8 ~ 17 별 특징

우테코를 시작하기에 앞서, Spring 3.x를 사용하면서 JDK17 버전을 사용하긴 했으나.. 무슨 특징이 있는지 모르고 그냥 막무가내로 사용하기만 했었다. 이전 버전도 무슨 특징이 있는지 모르고 사용했었는데 이번 기회에 정리하고 사용할 기회가 있으면 사용해보려고 한다. JDK 8 Lambda 표현식 단일 메소드 인터페이스 (함수형 인터페이스)의 인스턴스를 훨씬 더 간결하고 표현력이 뛰어나며 가독성 있는 방식으로 작성할 수 있다. List items = new ArrayList(); //... add items items.forEach(item -> System.out.println(item)); // using lambda Stream API 선언적 방식으로 데이터를 처리할 수 있는 새로운 추상화이다..

Backend/Springboot 2023.10.23

Google Java Style Guide 번역 (feat. 우테코)

원본 : https://google.github.io/styleguide/javaguide.html Google Java Style Guide 1 Introduction This document serves as the complete definition of Google's coding standards for source code in the Java™ Programming Language. A Java source file is described as being in Google Style if and only if it adheres to the rules herein. Like ot google.github.io 번역에 추가적인 내용을 추가했다. 우테코 스타일로 넘어가면서 달라진 점은 대체했다...

Backend/Springboot 2023.10.23

예시로 보는 객체지향 생활체조

객체지향 생활체조란? 좋은 객체 지향 디자인을 하기 위한 9가지 규칙 유지 관리가 용이하고 가독성이 높으며 테스트 가능한 코드를 만드는 것을 목표 1. 한 메소드에 한 단계의 들여쓰기만 한다. Only One Level of Indentation Per Method - Without Rules public void someMethod(List items) { for (String item : items) { if (item != null) { System.out.println(item); } } } 1차적으로 for문에서 들여쓰기가 되었고, 2차적으로 for문 내부에서 if문에 의해 들여쓰기가 되었다. - With Rules public void someMethod(List items) { for (St..

Backend/Springboot 2023.10.22

빌드 도구 (feat. Maven, Gradle)

빌드 도구란 소스 코드를 컴파일하고, 테스트를 실행하고, 소프트웨어의 구성 요소를 배포 가능한 애플리케이션으로 패키징하는 소프트웨어 도구로서 프로세스를 자동화하고 관리 소프트웨어 개발 수명 주기의 필수적인 부분 빌드 도구의 역할 1. 코드 컴파일 - 프로그램이 언어로 작성된 소스 코드를 대상 환경에서 실행할 수 있는 실행 가능한 바이너리 또는 중간 코드로 컴파일 2. 테스트 실행 - 단위 테스트, 통합 테스트 등 자동화된 테스트를 실행 3. 종속성 관리 - 프로젝트가 의존하는 외부 라이브러리, 프레임워크, 모듈 등을 다운로드하고 버전을 관리 4. 패키징 및 배포 - 컴파일된 코드와 필요한 리소스를 JAR, WAR 또는 실행 파일과 같은 배포 가능한 아티팩트로 패키징 5. 정적 분석 - 정적 코드 분석 및..

Backend/Springboot 2023.08.26

Spring-boot-devtools 적용

Spring-boot-devtools Spring Boot 프레임워크에서 제공하는 모듈 또는 기능으로, 개발 주기를 단축하고 더 편리하게 만드는 도구 devtools 기능 1. Automatic Restart - 소스 코드에서 변경 사항이 감지될 때마다 애플리케이션을 자동으로 다시 시작하는 기능 - 수동으로 재시작할 필요가 없으므로 개발 시간을 절약할 수 있음 2. Live Reload - 정적 리소스가 변경될 때마다 브라우저 새로고침 또는 페이지 재로드를 감지 - 페이지를 수동으로 새로고침하지 않고도 브라우저에서 즉각적인 업데이트 가능 3. Remote Development - 원격 애플리케이션 인스턴스에 연결하여 자동 재시작 및 실시간 재로드 기능을 활용할 수 있음 4. Property Default..

Backend/Springboot 2023.08.25
728x90