목록분류 전체보기 (79)
꾸준한 개발일기
🔍 @Configuration이란?@Configuration 은 스프링의 설정 파일을 정의할 때 사용하는 애노테이션즉, 이 클래스를 스프링 컨테이너에서 설정 정보를 담고 있는 클래스로 인식하게 해 준다📌 @Configuration을 사용해야 하는 이유1️⃣ 스프링 빈(Bean) 등록을 위한 설정 클래스@Bean 애노테이션을 사용해 스프링 컨테이너에 빈을 등록하는 클래스임을 명시한다.@Configuration이 붙은 클래스는 스프링이 자동으로 관리하는 설정 클래스가 된다.2️⃣ 싱글톤을 보장하기 위해 사용됨 (CGLIB 프록시 사용)스프링 컨테이너는 기본적으로 싱글톤 패턴을 적용하여 같은 객체를 공유한다@Configuration을 사용하면, 싱글톤이 보장되도록 내부적으로 CGLIB 프록시를 적용한다. ..
🧵 Thread(스레드)란?스레드(Thread) 는 프로그램 내에서 실행되는 하나의 작업 흐름(실행 단위) 을 의미합니다.하나의 애플리케이션은 여러 개의 스레드를 가질 수 있음 (멀티스레드 환경)스레드끼리 자원을 공유할 수 있지만, 동시에 접근하면 경합(경쟁 조건, Race Condition) 이 발생할 수 있음🔍 코드에서 Thread 개념 이해하기// A 사용자가 10000원 주문int userAPrice = statefulService1.order("userA", 10000);// B 사용자가 20000원 주문int userBPrice = statefulService2.order("userB", 20000);이 코드에서 statefulService1과 statefulService2는 동일한 빈(객..
🔍 AnnotationConfigApplicationContext란?AnnotationConfigApplicationContext 는 스프링 컨테이너(ApplicationContext)의 구현체로,자바 기반 설정 클래스(@Configuration)를 읽어서 스프링 빈을 등록하고 관리하는 역할을 합니다.🔎 왜 사용하는가?과거 XML 기반의 스프링 설정 대신, 자바 코드(@Configuration, @Bean)를 활용한 설정을 지원하기 위해 사용됩니다.📌 과거 방식 (XML 기반 스프링 설정)→ 유지보수가 어렵고, 타입 안전성이 낮음 ✅ 현재 방식 (자바 기반 설정)→ 타입 안전성 보장, IDE의 지원 가능(컴파일 시 오류 감지 가능)@Configurationpublic class AppConfi..
1️⃣ 웹 애플리케이션의 특징웹 애플리케이션은 여러 사용자가 동시에 요청하는 환경에서 동작합니다.HTTP 요청이 들어올 때마다 새로운 컨트롤러, 서비스, 리포지토리 등의 객체가 생성되면 메모리 낭비가 발생합니다.이를 방지하기 위해 객체를 한 번만 생성하고 공유하는 방식이 필요합니다.2️⃣ 싱글톤 패턴싱글톤 패턴은 객체의 인스턴스를 하나만 생성하여 공유하는 디자인 패턴입니다.하지만, 직접 싱글톤을 구현하면 다음과 같은 문제점이 발생할 수 있습니다.❌ 코드가 복잡해짐: private 생성자, static 메서드 등을 직접 관리해야 함❌ 테스트가 어려움: 여러 테스트 환경에서 객체를 재사용하는 것이 어려움❌ 다른 객체와의 의존성 관리가 어려움3️⃣ 스프링의 싱글톤 컨테이너스프링은 이러한 문제를 해결하기 위해 ..
1. Web 서버와 WAS 서버의 정의✅ Web 서버 (Web Server)클라이언트(브라우저)의 요청을 받아 정적인 HTML, CSS, JavaScript, 이미지 등의 정적 리소스를 제공하는 서버대표적인 웹 서버: Apache HTTP Server, Nginx, Microsoft IIS일반적으로 HTTP 요청을 처리하며, 사용자가 요청한 페이지를 반환하는 역할 수행✅ WAS (Web Application Server)동적인 로직을 처리하는 서버로, 사용자의 요청을 받아 비즈니스 로직을 수행한 후 결과를 반환데이터베이스와 연동하여 사용자의 요청에 따라 동적으로 페이지를 생성함대표적인 WAS: Tomcat, JBoss, WebSphere, WebLogicJava 기반 WAS의 경우 Servlet, JSP..