목록분류 전체보기 (168)
프로그래밍 공부
스프링 프레임워크에서 빈(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..
요즘 스프링 공부를 다시 시작했다. 예전에 배웠던 내용이지만, 한동안 안 쓰다 보니 가물가물한 부분이 많다. 특히 면접 준비나 다른 공부를 하다 보면 다시 잊어버릴까 봐 걱정돼서 이번에는 제대로 정리하면서 학습해보려고 한다. 공부는 유데미 강의를 들으면서 핵심 내용을 정리하고 있는데, 그냥 대충 메모만 해두면 나중에 다시 봤을 때 이해가 안 될 것 같아서 GPT를 활용해 내용을 정리하는 방식으로 바꿨다. 강의 내용을 듣고 간단히 끄적여 놓은 것들을 GPT에 넣으면, 이쁘게 정리해 주고 부족한 부분까지 보완해 주니까 꽤 효율적인 것 같다. 그리고 일단 정리한 내용은 노션에 저장하고 있다. 노션이 편하긴 하지만, 가끔 접속이 어려울 때도 있어서 블로그에도 함께 정리해두는 중이다. 이렇게 해두면 어디서든 다시..
@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..