본문 바로가기

분류

(1203)
@UtilityClass # UtilityClass 에 대해서 정의@UtilityClass는 Project Lombok 라이브러리에서 제공하는 어노테이션입니다. 이 어노테이션은 클래스가 유틸리티 클래스임을 나타냅니다.유틸리티 클래스란, 상태를 가지지 않는 메서드들만을 모아놓은 클래스를 말합니다. 이러한 클래스는 보통 static 메서드들로만 이루어져 있습니다.@UtilityClass 어노테이션을 사용하면 다음과 같은 효과가 있습니다:클래스를 final로 만들어, 상속을 방지합니다.기본 생성자를 private으로 만들어, 인스턴스 생성을 방지합니다.클래스 내의 모든 메서드를 static으로 만듭니다.따라서, @UtilityClass 어노테이션은 유틸리티 클래스를 쉽게 만들 수 있도록 도와줍니다.예를 들어, 다음과 같이 사용할 수 ..
Spring Bean (스프링 빈) 이란? # Spring Bean 이란?Spring Bean은 Spring Framework에서 관리하는 객체를 의미합니다. Spring IoC(Inversion of Control) 컨테이너에 의해 인스턴스화, 조립, 관리되는 객체를 말합니다.Spring Bean은 보통 Spring의 설정 메타데이터(XML 파일, Java annotations, Java code 등)에 의해 정의되며, 이 설정 메타데이터는 Bean의 생성 및 서비스 요청에 대한 세부 정보를 제공합니다.Spring Bean은 다음과 같은 특징을 가집니다:Singleton: 기본적으로, Spring은 각 Bean 정의에 대해 하나의 인스턴스만 생성합니다. 이 인스턴스는 Singleton 범위를 가지며, 이는 전체 애플리케이션 컨텍스트에서 공유됩니..
MVCC (MultiVersion Concurrency Control) Pattern 1. MVCC 패턴다중 버전 동시성 제어 (MVCC) 패턴은 데이터베이스에서 일반적으로 사용되는 동시성 제어 방법으로, 같은 데이터에 대한 트랜잭션 간의 충돌을 피하기 위해 사용된다. 이 방법은 각 트랜잭션이 수정하는 각각의 데이터 항목에 대해 별도의 "버전"을 생성함으로써 작동한다. 이를 통해 각 트랜잭션은 자신만의 데이터 스냅샷으로 작업할 수 있으며, 다른 동시 트랜잭션에서 수행된 변경 사항에 영향을 받지 않는다. 이 프로젝트의 맥락에서, MVCC 패턴은 `ProductEntity`의 버전 필드를 사용하여 애플리케이션 수준에서 구현된다. 제품이 업데이트될 때, `ProductMapper`의 `updateIfVersionMatches` 메소드는 데이터베이스의 제품 버전이 업데이트하려는 `ProductE..
RaceContion을 회피하기 위한 디자인 패턴 종류 # RaceCondition을 회피하지 위한 디자인 패턴레이스 컨디션을 피하는 데 도움이 되는 디자인 패턴은 일반적으로 동기화 또는 상호 배제를 포함한다.1. Monitor Pattern: 이 패턴은 동기화 코드와 함께 공유 리소스를 캡슐화한다. 한 번에 하나의 스레드만 모니터의 어떤 메서드를 실행할 수 있어 레이스 컨디션을 방지한다. GitHub - Nanninggu/MornitorPattern: About MornitorPatternAbout MornitorPattern. Contribute to Nanninggu/MornitorPattern development by creating an account on GitHub.github.com2. Singleton Pattern: 이 패턴은 클래스가 하..
Chain-of-Responsibility-Pattern # Chain-of-Responsibility-Pattern 내용 정리1. 작성예정2. 작성예정3. 예제 코드는 아래의 git hub에 업로드 되어 있다.https://github.com/Nanninggu/Chain-of-Responsibility-Pattern.git GitHub - Nanninggu/Chain-of-Responsibility-Pattern: About Chain-of-Responsibility-PatternAbout Chain-of-Responsibility-Pattern. Contribute to Nanninggu/Chain-of-Responsibility-Pattern development by creating an account on GitHub.github.com - 끝 -
Template-Method-Pattern # Template-Method-Pattern (템플릿 메소드 패턴) 정리1. 흐름 정리이 프로젝트의 핵심 로직은 템플릿 메소드 패턴을 사용하여 공통적인 작업 흐름을 정의하고, 그 중 일부 단계를 서브클래스에서 구현하도록 하는 것이다.아래의 업로드된 코드에서 보면 아래와 같다.AbstractBaseMapper.java에서 템플릿 메소드인 selectOne(String id)를 정의하고 있다.이 메소드는 애플리케이션의 핵심 작업 흐름을 정의한다.이 메소드는 executeSelectOne(String id)와 postSelect(List result) 메소드를 순서대로 호출한다.executeSelectOne(String id) 메소드는 AbstractBaseMapper에서는 빈 메소드로 정의되어 있습니다.그..
List<T> # List에 대해서 정리List는 Java에서 제공하는 인터페이스 중 하나로, 동적 배열을 구현하는 데 사용된다. 여기서 T는 제네릭 타입을 나타내며, 이를 통해 다양한 타입의 객체를 저장할 수 있다.  예를 들어, List은 문자열 객체를 저장하는 리스트를 나타내고, List는 정수 객체를 저장하는 리스트를 나타낸다.  List 인터페이스는 다양한 메소드를 제공하여 리스트에 객체를 추가, 제거, 검색 등의 작업을 수행할 수 있다. 이러한 메소드에는 add(), remove(), get(), size() 등이 포함 되며,  다음은 List을 사용하는 간단한 예이다:List list = new ArrayList();list.add("Hello");list.add("World");System.out.pri..
Bridge-Pattern # Bridge-Pattern에 대해 정리.1. 아래의 예제 코드로업로드 된 브릿지 패턴의 구조는 아래와 같다.브릿지 패턴은 큰 클래스 또는 밀접하게 관련된 클래스들의 로직을 별도의 계층으로 분리하는 구조적 디자인 패턴이다.이 계층은 추상화와 구현으로 나뉘며, 이들은 서로 독립적으로 개발될 수 있다. 아래에 제공된 코드에서는 User, UserMapper, UserService, UserServiceImpl, 그리고 UserController 클래스들이 브릿지 패턴을 구현하고 있다.User 클래스는 추상화를 나타낸다. 이 클래스는 사용자의 정보를 나타내며, 데이터베이스와의 상호작용에 대해서는 알 필요가 없다.UserMapper 인터페이스는 구현을 나타낸다. 이 인터페이스는 MyBatis 어노테이션을 사용..