본문 바로가기
반응형

Back-End/Spring Boot39

Spring Boot, 날개를 달아주는 의존성(Dependencies) 안녕하세요, Spring Boot 개발자 여러분! Spring Initializr에서 프로젝트를 생성할 때, 우리는 수많은 의존성(Dependencies) 목록을 마주하게 됩니다. 클릭 한 번으로 강력한 기능들을 추가할 수 있지만, 각각의 의존성이 내 프로젝트에서 어떤 역할을 하는지 정확히 알고 사용하는 것이 중요합니다.이번 포스팅에서는 가장 핵심적인 의존성 7가지를 선별하여, 각각이 어떤 마법을 부리는지 쉽고 명확하게 설명해 드리겠습니다.1. Spring WebSpring Web은 웹 애플리케이션과 RESTful API를 만드는 데 필요한 모든 것을 제공하는 기본 중의 기본입니다. 이 의존성을 추가하면, 웹 개발에 필요한 핵심 기능들이 자동으로 설정됩니다.주요 기능:내장 웹 서버: Tomcat과 같은 .. 2025. 7. 15.
스프링 부트 시작의 첫걸음: Spring Initializr 설정 완벽 정복 안녕하세요! Spring Boot로 첫 프로젝트를 시작하려는 모든 분을 환영합니다. 프로젝트를 시작할 때 가장 먼저 마주하는 화면이 바로 Spring Initializr입니다. 수많은 설정 항목에 당황하셨을 수도 있습니다.이 설정들은 앞으로 만들어갈 프로젝트의 정체성과 뼈대를 결정하는 아주 중요한 과정입니다.이번 포스팅에서는 각 설정이 어떤 의미를 가지는지, 어떻게 채워나가야 하는지 하나씩 쉽고 명확하게 알려드리겠습니다. https://start.spring.io/1. Project: 내 프로젝트의 빌드 도구 선택하기가장 먼저 선택할 것은 'Project' 항목입니다. 이것은 프로젝트의 코드를 빌드하고, 라이브러리를 관리하는 빌드 도구(Build Tool)를 무엇으로 할지 결정하는 단계입니다.Maven.. 2025. 7. 15.
스프링 트랜잭션 전파 속성 스프링에서 트랜잭션 전파(Transaction Propagation) 는 트랜잭션의 경계에서 이미 진행 중인 트랜잭션이 있을 때 또는 없을 때 어떻게 동작할 것인가를 결정하는 기능입니다. 가령, @Transactional 어노테이션이 존재하는 메서드를 호출했을 때, 기존에 트랜잭션이 존재하면 재사용할지, 예외를 던질지 등 행동을 결정할 수 있습니다.트랜잭션 전파 속성에는 REQUIRED, REQUIRED_NEW, MANDATORY, SUPPORTS, NOT_SUPPORTED, NESTED, NEVER가 존재하며, @Transactional 어노테이션의 propagation 속성에 값을 설정할 수 있습니다.트랜잭션 전파 속성 설명REQUIRED는 트랜잭션이 존재하는 경우 해당 트랜잭션 사용하고, 트랜잭션이.. 2025. 6. 26.
@Component, Controller, @Service, @Repository 차이점 각각의 클래스를 특정 역할을 수행하는 Spring Bean으로 등록할 때 사용된다. 각 애너테이션은 클래스가 어떤 역할을 하는지를 명시적으로 나타내며, Spring의 @ComponentScan 기능을 통해 자동으로 Bean으로 등록된다. 모두 내부적으로 @Component 어노테이션을 사용하고 있특징과 용도@Component는 가장 일반적인 형태의 어노테이션으로, 특정 역할에 종속되지 않는 일반적인 Spring Bean을 나타낸다. 공통 기능을 제공하는 유틸리티 클래스나, 특정 계층에 속하지 않는 일반적인 컴포넌트를 정의할 때 사용된다.@Service는 비즈니스 로직을 수행하는 클래스에 사용되며 서비스 레이어의 Bean을 나타낸다.@Controller는 Spring MVC에서 웹 요청을 처리하는 컨트롤러.. 2025. 3. 17.
Spring Event Publisher/Listener // 이벤트 객체public class PaymentSuccessEvent { private final String orderKey; private final String paymentKey; public PaymentSuccessEvent(String orderKey, String paymentKey) { this.orderKey = orderKey; this.paymentKey = paymentKey; } public String getOrderKey() { return orderKey; } public String getPaymentKey() { return paymentKey; }}// 이벤트 발행서비스@.. 2024. 8. 9.
트랜잭션 전파 ≣ 목차//// Source code recreated from a .class file by IntelliJ IDEA// (powered by FernFlower decompiler)//package org.springframework.transaction.annotation;public enum Propagation { REQUIRED(0), SUPPORTS(1), MANDATORY(2), REQUIRES_NEW(3), NOT_SUPPORTED(4), NEVER(5), NESTED(6); private final int value; private Propagation(int value) { this.value = value; } .. 2024. 7. 26.
@Transactional ≣ 목차 스프링의 AOP 를 통해 @Transactional 어노테이션을 사용해서 트랜잭션을 걸 수 있다.조회용 메서드에 @Transactional(readOnly = true) 속성을 설정하면 성능상 이점을 얻을 수 있다. + Lazy Loading, Replication 과 같이 트랜잭션 범위 내에서 수행해야 되는 동작이 있는 경우에 적절하게 활용하는 것이 좋으며, 무분별하게 사용할 경우 Snapshot 유지, Flush 의 필요 등 관리적/메모리적 측면에서 좋지 않을 수 있고, 커넥션을 오래 가지고 있어서 커넥션 부족 등의 문제가 발생할 수 있음을 유의한다. readOnly = trueJPA - Session Flush Mode Setting스프링 프레임워크가 JPA 의 세션 플러시 모드를 'MAN.. 2024. 7. 15.
Spring Controller header 값 가져오기 @RequestHeader(""): "" 내부에 있는 헤더명으로 헤더 값을 받아오도록 설정할 수 있다.HttpServletRequest 객체: 객체를 파라미터로 받아와 getHeader 메서드를 통해 헤더 값을 가져올 수 있다.import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestHeader;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.Ht.. 2024. 7. 10.
데이터베이스 decimal 타입 JPA 에서 표현하기 Double 등의 타입을 사용할 수 있지만, 부동 소수점 연산의 정밀도 문제로 인해 BigDecimal 이 더 안전되게 사용된다.BigDecimal@Entitypublic class EntityClass { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(precision = 10, scale = 2) private BigDecimal decimalField;} @DecimalMin, @DecimalMax0.00 ~ 99999.99 사이의 값을 가질 수 있도록 제한할 수 있다.@Entitypublic class EntityClass { @Id @GeneratedValue(.. 2024. 7. 9.
728x90
반응형