300===Dev Framework/Spring 21

IoC와 DI의 차이점 알아보기

오늘은 스프링(Spring) 프레임워크의 핵심 개념 중 하나인 IoC(Inversion of Control)와 DI(Dependency Injection)에 대해 알아보겠습니다. 이 두 개념은 스프링을 제대로 이해하기 위해 반드시 짚고 넘어가야 할 아주 중요한 토픽입니다.1. IoC와 DI란? 🤔1) IoC(Inversion of Control)란?IoC는 '제어의 역전'이라는 뜻으로, 객체의 제어 권한을 개발자가 아닌 외부(프레임워크 또는 컨테이너)가 담당하도록 하는 개념을 말합니다. 전통적으로는 객체를 사용하는 쪽에서 직접 인스턴스를 생성하고, 의존성을 관리해왔습니다. 하지만 IoC를 적용하면, 객체 생성과 의존성 관리의 제어권을 스프링 컨테이너가 담당하게 됩니다.예를 들어, 스프링 컨테이너가 객..

Spring의 @Autowired - 의존성 주입이란 🚀

의존성 주입(Dependency Injection)을 손쉽게 구현할 수 있는 방법을 찾고 계신가요? 스프링 프레임워크는 복잡한 객체 간의 관계를 자동으로 관리해 주는 강력한 기능을 제공합니다. 그중에서도 @Autowired 어노테이션은 마치 레고 블록을 조립하듯, 필요한 부품(객체)을 자동으로 연결해 주어 개발자의 부담을 덜어줍니다. 이 글에서는 @Autowired의 개념부터 다양한 사용법, 동작 원리, 주의사항, 그리고 베스트 프랙티스까지 자세히 알아보고, 실제 프로젝트에서 어떻게 활용할 수 있는지 살펴보겠습니다.1. @Autowired란? 🤔@Autowired는 스프링의 의존성 주입 메커니즘을 구현하기 위한 어노테이션입니다.쉽게 말해, 필요한 객체를 자동으로 주입해주는 마법 같은 기능이라 할 수 있..

Spring에서의 Builder 패턴 완벽 가이드 🏗️

안녕하세요! 오늘은 Spring 프레임워크에서 자주 사용되는 Builder 패턴에 대해 자세히 알아보겠습니다. 마치 레고 블록을 조립하듯 객체를 유연하게 생성하는 방법을 함께 살펴볼게요! Builder 패턴이란? 🤔Builder 패턴은 복잡한 객체를 단계별로 생성할 수 있게 해주는 생성 패턴입니다. 마치 주문서에 원하는 옵션을 하나씩 체크하듯이, 필요한 속성들을 순차적으로 설정할 수 있죠!public class User { private final String name; private final int age; private final String email; private User(UserBuilder builder) { this.name = builder.name;..

Spring @Options와 FlushCache 정책 😋

오늘은 MyBatis의 @Options 애노테이션과 캐시 정책에 대해 자세히 알아보겠습니다!@Options가 뭔가요? 🤔마치 커피숍에서 주문할 때 "아이스로 해주세요", "시럽 추가해주세요" 같은 옵션을 지정하듯이,@Options는 MyBatis 쿼리 실행 시 다양한 옵션을 설정할 수 있게 해주는 애노테이션입니다.FlushCache 옵션은 어떤 역할을 하나요? 💫FlushCache는 쿼리 실행 전/후에 캐시를 어떻게 처리할지 결정하는 정책입니다.예를 들어보면:TRUE로 설정: 커피숍에서 물통을 완전히 비우고 새로운 물을 채우는 것처럼, 캐시를 깨끗이 비웁니다FALSE로 설정: 물통에 있는 물을 그대로 사용하는 것처럼, 기존 캐시를 유지합니다어떻게 사용하나요? 🎬1. 기본 사용법@Options(flu..

Spring Controller HTTP 메소드 어노테이션 완벽 가이드 🎯

안녕하세요! 오늘은 Spring Controller에서 사용되는 HTTP 메소드별 특화 어노테이션에 대해 자세히 알아보겠습니다.HTTP 메소드 어노테이션이란? 🤔HTTP 메소드 어노테이션은 Spring MVC에서 각 HTTP 요청 방식을 처리하기 위한 특별한 어노테이션입니다. 마치 우체통에 편지를 넣는 것처럼, 각각의 요청을 알맞은 메소드로 전달해주는 역할을 합니다!기본 어노테이션 살펴보기 📬1. @GetMapping@GetMapping("/users/{id}")public User getUser(@PathVariable Long id) { return userService.findById(id);}데이터 조회에 사용URL에 파라미터가 노출됨브라우저 히스토리에 기록됨북마크 가능2. @PostMa..

Spring Controller 완벽 가이드 🎯

안녕하세요! 오늘은 Spring Framework의 핵심 컴포넌트인 Controller에 대해 자세히 알아보겠습니다.Controller란? 🤔Controller는 Spring MVC에서 웹 요청을 처리하는 핵심 컴포넌트입니다. 쉽게 설명하면:사용자의 HTTP 요청을 받아서 처리하는 진입점비즈니스 로직을 호출하고 결과를 반환하는 중개자 역할URL 매핑과 요청/응답 처리를 담당Controller 종류 📚Spring에서 제공하는 주요 Controller 어노테이션은 다음과 같습니다:1. @Controller@Controllerpublic class HomeController { @GetMapping("/") public String home() { return "home"; // V..

Spring Data JDBC: JPA보다 가벼운 ORM의 대안 🚀

안녕하세요! 오늘은 Spring Data JDBC에 대해 좀 더 깊이 있게 알아보겠습니다.JPA(ORM) 사용이 너무 무겁고 복잡하게 느껴지셨나요? Spring Data JDBC는 훨씬 단순하면서도 기본적인 ORM 기능을 제공하여, 가벼운 프로젝트나 간단한 데이터 매핑이 필요한 경우 매우 유용한 대안이 될 수 있습니다. 1. Spring Data JDBC란? 🤔Spring Data JDBC는 JPA처럼 객체와 데이터베이스를 매핑해 주지만, 영속성 컨텍스트(Persistence Context)가 없고, 프록시 객체나 캐싱 같은 복잡한 기능 없이 “직접적인 SQL 실행”으로 작동합니다.쉽게 말해 “미니멀한 ORM”이라고 할 수 있으며, 아래와 같은 특징을 갖습니다.🔹 단순한 구조: JPA처럼 복잡한 설정..

Spring @Transactional 완벽 가이드 🎯

안녕하세요! 오늘은 Spring Framework에서 가장 중요한 기능 중 하나인 @Transactional에 대해 자세히 알아보겠습니다.@Transactional이란? 🤔트랜잭션이란 "all or nothing"의 원칙으로 작동하는 작업 단위입니다. 은행 송금을 예로 들면:A 계좌에서 돈을 차감하고B 계좌에 돈을 추가하는두 작업이 모두 성공하거나, 모두 실패해야 합니다.@Transactional 애노테이션은 이러한 트랜잭션 처리를 간단하게 해주는 Spring의 마법 같은 기능입니다!트랜잭션의 4가지 특성 (ACID) 💫원자성 (Atomicity)트랜잭션 내 모든 작업은 모두 성공하거나 모두 실패중간 상태는 존재하지 않음일관성 (Consistency)트랜잭션 전후로 데이터베이스는 일관된 상태를 유지예..

Spring Properties & Profiles 완벽 가이드 🎯

Properties가 뭔가요? 🤔Properties는 애플리케이션의 설정 값들을 외부 파일로 분리하여 관리하는 방식입니다.예를 들어볼까요?개발 환경: db.url=localhost:3306운영 환경: db.url=prod.company.com:3306 이렇게 환경별로 다른 설정값들을 손쉽게 관리할 수 있답니다!Properties 설정 방법 💡1. application.properties 생성# src/main/resources/application.propertiesdb.url=localhost:3306db.username=devdb.password=12342. @PropertySource 설정@Configuration@PropertySource("classpath:/application.proper..

Spring Bean의 생명주기 콜백 메서드 (@PostConstruct & @PreDestroy) 🌱

안녕하세요! 오늘은 Spring Bean의 초기화와 소멸 시점에 실행되는 콜백 메서드에 대해 알아보겠습니다.Bean 생명주기 콜백이 필요한 이유 🤔데이터베이스 연결, 캐시 초기화, 외부 리소스 로딩 등 Bean이 생성된 직후나 소멸되기 직전에 특별한 작업이 필요한 경우가 있습니다.예를 들어볼까요?애플리케이션 시작 시 필요한 설정 파일 로딩데이터베이스 커넥션 풀 초기화임시 파일 정리리소스 해제@PostConstruct 💫Bean이 생성되고 의존성 주입이 완료된 후 실행되는 메서드입니다.@Servicepublic class UserService { private Cache cache; @PostConstruct public void init() { System.out.prin..

728x90
반응형