목록Programming (56)
프로그래밍 공부
🌱 스프링 빈의 스코프(Bean Scope)1️⃣ 스프링 빈 스코프란?스프링 컨테이너에서 빈이 생성되고 관리되는 범위(scope)를 지정하는 설정.기본 스코프는 singleton이며, 하나의 인스턴스만 생성됨.필요에 따라 새로운 빈 인스턴스를 계속 생성할 수도 있음.스코프는 @Scope 어노테이션을 사용하여 설정할 수 있다.@Component@Scope("prototype") // 프로토타입 스코프 적용public class MyBean {}2️⃣ 스프링이 제공하는 빈 스코프 종류스코프 이름 설명 사용 범위singleton(기본값) 컨테이너당 하나의 인스턴스만 생성전역prototype요청할 때마다 새로운 인스턴스 생성전역requestHTTP 요청이 올 때마다 새로운 인스턴스 생성웹sessionHTTP ..
스프링 프레임워크에서 빈(Bean)의 초기화 시점은 애플리케이션 성능과 리소스 사용에 영향을 미치는 중요한 요소야. 이를 제어하는 방식으로 즉시 초기화(Eager Initialization)와 지연 초기화(Lazy Initialization)가 있다.1. 스프링 빈 초기화 개념스프링 컨테이너가 빈을 생성하고 의존성을 주입하는 시점을 의미한다.즉시 초기화: 스프링 컨테이너가 시작될 때 빈을 생성하는 방식지연 초기화: 빈이 실제로 사용될 때(lazy loading) 생성하는 방식2. 즉시 초기화(Eager Initialization)🔹 개념스프링 컨테이너가 로딩될 때(앱 실행 시) 모든 빈을 미리 생성@Configuration 클래스에서 등록된 빈들은 기본적으로 즉시 초기화됨🔹 특징✔ 애플리케이션이 시작..
🚀 의존성 주입(Dependency Injection, DI)을 하는 이유스프링에서 의존성 주입(DI) 을 사용하는 이유는 객체 간의 결합도를 낮추고 유지보수성을 높이기 위해서야. DI를 사용하면 코드가 더 유연하고 확장 가능해진다.1. 객체 간의 결합도(Dependency)를 낮추기 위해DI를 사용하면 객체 간의 강한 결합도를 줄이고 느슨한 결합(Loosely Coupled)을 유지할 수 있다.예를 들어, 아래처럼 직접 객체를 생성하면 Car 클래스는 Engine 구현체에 강하게 의존하게 됨.❌ 의존성 주입 없이 직접 객체 생성 (강한 결합)public class Car { private Engine engine = new Engine(); // 직접 객체 생성 public void st..
☕ POJO vs. 스프링 빈 vs. EJB 비교 정리자바 개발에서 객체를 관리하는 방식에는 POJO, 스프링 빈, EJB 등이 있다.1️⃣ POJO (Plain Old Java Object)POJO란?POJO는 특정 프레임워크나 환경에 종속되지 않는 일반적인 자바 객체.단순한 클래스로, 어떠한 어노테이션이나 인터페이스도 필요하지 않음.✅ POJO의 특징특정 프레임워크에 종속되지 않음단순한 getter/setter 메서드를 가질 수 있음Spring, JPA, Hibernate, MyBatis 등과 독립적으로 사용 가능재사용성이 높고, 테스트가 용이함✅ POJO 예제public class User { private String name; private int age; public User(..
스프링 컨테이너(Spring Container)는 스프링 프레임워크의 핵심 개념 중 하나로, 객체(Bean)의 생성, 관리, 소멸을 담당하는 역할을 합니다. 이를 통해 개발자는 객체의 생성과 관계 설정을 직접 처리하지 않고, 스프링이 이를 대신 관리하도록 할 수 있다🌱 스프링 컨테이너(Spring Container)란?스프링 컨테이너는 스프링의 IoC(Inversion of Control) 기능을 제공하는 핵심 요소이다. 컨테이너는 개발자가 직접 객체를 생성하지 않고, 스프링이 객체의 라이프사이클을 관리하도록 위임하는 역할을 함/🏗️ 스프링 컨테이너의 주요 기능객체(Bean) 생성 및 관리개발자가 직접 객체를 생성하지 않고, 스프링이 객체를 자동으로 생성하여 관리합.의존성 주입(DI, Dependen..
@Component와 @Bean은 스프링에서 빈(Bean)을 등록하는 방법이지만, 사용 방식과 목적이 다르다.1. @Component✅ 클래스 수준에서 사용하며, 자동으로 빈을 등록할 때 활용✅ @ComponentScan을 통해 해당 패키지 내의 클래스를 자동 감지하여 빈으로 등록📌 사용 예시import org.springframework.stereotype.Component;@Component // MyService가 자동으로 빈으로 등록됨public class MyService { public void sayHello() { System.out.println("Hello from MyService!"); }}📌 @ComponentScan 설정import org.spring..