728x90

분류 전체보기 75

[Spring] Spring Bean이란?

목차Spring Bean이란?Bean 등록 방법Bean 생성과정 / 생명주기Bean Scope 1. Spring Bean이란?Spring Bean빈은 인스턴스화된 객체를 의미하며, 스프링 컨테이너에 등록된 객체로 스프링 컨테이너에 의해 관리된다.스프링 빈은 싱글톤(Singleton) 패턴으로 관리되어 애플리케이션 전체에서 하나의 인스턴스만 존재하게 된다.Bean 왜 쓸까?Bean을 통해 스프링 컨테이너에 객체 간의 의존 관계를 관리할 수 있다. 2. Bean 등록 방법Bean 등록 방법으로 다음과 같은 방법이 있다.(1) xml에 직접 등록(2) @Bean 어노테이션 사용메서드 위에 @Bean태그를 사용하고 AppConfig 객체 위에 @Configuration, @ComponentScan, @Impor..

Spring Boot 2025.03.06

[Java] 비동기 처리를 위한 CompletableFuture 완벽 가이드

목차비동기 프로그래밍의 개념왜 CompletableFuture를 사용할까?CompletableFuture 사용법 비동기 작업을 위해 Java8부터 도입된 CompletableFuture에 대해 살펴보자. 1. 비동기 프로그래밍의 개념CompletableFuture에 대해 설명하기 앞서, 동기와 비동기 그리고 블로킹과 논블로킹에 대한 개념을 짚고 넘어가자. 왜 이 개념에 대해 짚고 넘어가야할까? 동기와 비동기는 실행 시점에 대한 개념으로 어떻게 시작하고 진행할 지에 대한 것이며, 블로킹 논블로킹은 결과를 받는 방식과 관련된 개념으로 어떻게 기다리고 처리하는지에 대한 것이다. 이 개념을 시작으로 자바의 비동기 프로그래밍에 다가갈 수 있다. 1.1 동기 vs 비동기동기: 한 작업이 완료된 후에 다음 작업을 시..

Java 2025.03.06

[DB] 트랜잭션 격리수준 (Isolation level)

트랜잭션이란 데이터베이스의 상태를 변화시키기 위한 일련의 작업 단위로 ACID(원자성, 일관성, 독립성, 지속성)의 특징을 갖는다.  ACID에 대해 간략히 정리하면 다음과 같다. Atomicity (원자성) - 트랜잭션의 모든 쿼리가 DB에 반영되거나, 모두 반영되지 않아야 한다.Consistency (일관성) - 트랜잭션 처리 결과는 항상 일관성이 있어야 한다.Isolation (독립성) - 서로 다른 트랜잭션을 서로의 연산에 개입할 수 없다.Durability (지속성) - 트랜잭션이 성공적으로 처리되었다면 결과는 영구 반영되어야 한다. 트랜잭션 격리 수준은 여러 트랜잭션이 동시에 처리될 때, 특정 트랜잭션이 변하거나 조회하는 데이터를 다른 트랜잭션에서 볼 수 있게 허용할지 여부를 결정하는 것이다...

DB 2025.02.06

[Spring] SOLID 원칙

SOLID 원칙은 객체지향 설계 5원칙이라고도 불리며, 각 원칙의 앞글자를 따서 만들어졌다. SOLID 원칙은 객체지향 프로그래밍에서 개발 생산성을 높일 수 있으며 객체지향 설계의 핵심인 의존성 관리를 위해 준수해야하는 원칙이다.  SOLID 원칙을 지킴으로서 다음과 같은 이점을 얻을 수 있다.코드의 유지보수성 향상확장성 있는 설계 가능재사용 가능한 컴포넌트 구성 가능복잡성을 감소시켜 개발 생산성 향상 각각의 원칙을 하나씩 살펴보자. 1. SRP (Single Responsibility Principle, 단일 책임 원칙)SRP는 Single Responsibility Principle의 약자로 단일 책임 원칙을 의미한다. SRP는 한 클래스는 하나의 책임만 가져야한다는 원칙이다. 따라서 클래스는 오직 ..

Spring Boot 2025.02.06

[Java] Java 21 특징

Java 21은 2023년 9월에 출시된 LTS(Long Term Support) 버전으로 Java 21에서 추가된 기능과 특징에 대해 정리해보고자한다.주요 특징에 대해 정리하면 다음과 같다. Preview는 제외하였다.JEP 431 : Sequenced Collections (https://openjdk.org/jeps/431)JEP 439: Generational ZGC (https://openjdk.org/jeps/439)JEP 440: Record Patterns (https://openjdk.org/jeps/440)JEP 441: Pattern Matching for switch (https://openjdk.org/jeps/441)JEP 444: Virtual Threads (https://o..

Java 2025.01.31

[Java] Java 17 특징

Java 17은 2021년 9월에 출시된 LTS(Long Term Support) 버전으로 Java 17에서 추가된 기능과 특징에 대해 정리해보고자한다. 주요 특징에 대해 정리하면 다음과 같다.RecordSealed ClassSwitch ExpressionStream toList()Text Block위의 항목을 하나씩 살펴보자. 1. RecordRecord는 데이터 클래스를 의미하며 불변 객체를 생성하여 DTO 정의시 편리하게 사용할 수 있다.모든 필드가 private final로 선언된다.상속이 불가능하다.toString, equals, hashCode 등의 구현을 자동으로 해준다.예시public record Animal( String type, String name){} 2. Sealed ..

Java 2025.01.30

[Java] Java 11 특징

Java 11은 2018년 9월에 출시된 LTS(Long Term Support) 버전으로 Java 11에서 추가된 기능과 특징에 대해 정리해보고자한다. 주요 특징에 대해 정리하면 다음과 같다.Collection Factory Method 강화var 키워드 추가문자열 관련 Method 추가Reactive StreamZGC(Z Garbage Collector) 추가위의 항목을 하나씩 살펴보자. 1. Collection Factory Method 강화Java9에서 도입된 기능이 강화되었다.List, Set, Map과 같이 컬렉션을 생성할 수 있는 factory method를 사용할 수 있다.of()를 통해 예시와 같이 생성 가능하며, 이때 생성 된 것은 불변하다.참고)불변 List에 추가/삭제 작업을 하려면..

Java 2025.01.30

[AI] 당장 서비스에 적용할 수 있는 프롬프트 Skill

여러 서비스의 다양한 기능에 프롬프트 엔지니어링을 해보면서 습득한 프롬프트 스킬과 팁을 정리해 보고자한다. 목차공통 스킬상황별 스킬추가 Tip 프롬프트 엔지니어링도 코딩과 같다. 요구사항이 정해지면 그에 필요한 것들을 정의하고 설계하고 해결해 나가야 한다. 그리고 하나 하나 정교하게 명령을 풀어나가면 보다 좋은 결과를 얻을 수 있다. 아래의 스킬은 단순한 대화, 요약, 번역부터 AI 리포트, 캐릭터가 반영된 AI, 정확한 품질과 실시간 답변을 요하는 서비스까지 다양한 경험을 토대로 얻은 스킬이다. 당장 서비스에 적용할 수 있을 뿐만 아니라 일상에서 Chat GPT 같은 서비스를 이용할 때에도 도움이 될 것이다. 추가로 세부적인 제어를 위한 스킬들이 있지만, 이러한 부분은 기회가 되면 차차 다뤄보고자한다...

AI 2025.01.16

[Spring] Resilience4j를 통한 Circuit Breaker 패턴 적용 - (2)적용

앞서 살펴본 Resilience4j 라이브러리를 적용해 보고자한다. Circuit Breaker 패턴과 Resilience4j에 대해서는 이전 글을 참고하면 된다. 전체 코드는 GitHub에서 볼 수 있다. 목차Resilience4j 1.1 환경 구성1.2 프로퍼티 설정1.3 커스터마이징Circuit Breaker 기본 구현 2.1 @CircuitBreaker 적용 2.2 @TimeLimiter 적용2.3 상태 확인 및 관리 2.4 Fallback 전략 실전 예제3.1 시나리오3.2 Resilience4j 적용 코드3.3 적용 결과 3.4 고려 사항  1. Resilience4j 환경 구성1.1 의존성 추가gradleimplementation 'org.springframework.cloud:spring-..

Spring Boot 2025.01.15

[Spring] Resilience4j를 통한 Circuit Breaker 패턴 적용 - (1)개념

목차 Circuit Breaker란? Circuit Breaker 패턴 동작 방식 2.1 Circuit Breaker 상태 종 2.2 Circuit Breaker의 장애 판단 기준 2.3 Circuit Breaker 동작 방식 Resilience4j 라이브러리 3.1 Resilience4j 3.2 핵심 모듈 3.3 기본 설정 및 예시  1. Circuit Breaker란? Circuit Breaker란 사전적 의미로 회로 차단기이다. 회로 차단기는 전기 회로에서 과부하가 걸리거나 단락으로 인한 피해를 막기 위해 자동으로 회로를 정지시키는 장치이다. 차단기는 어느 정도 시간이 지난 뒤에는, 원래의 기능이 동작하도록 복귀한다.  Circuit Breaker 패턴은 회로 차단기처럼 MSA에서 장애 전파..

Spring Boot 2024.12.28
728x90