Back_End/Spring 10

스프링 의존성 주입(Dependency Injection, DI) 완전 정복

스프링의 핵심 철학은 IoC(Inversion of Control) 입니다. 이 철학을 구현하는 가장 대표적인 기술이 바로 의존성 주입(Dependency Injection) 입니다. 1. 의존성 주입이란?의존성(Dependency): 객체가 다른 객체를 사용할 때, 이 관계를 ‘의존성’이라고 합니다.주입(Injection): 필요한 의존 객체를 직접 생성하지 않고 외부에서 넣어주는 것입니다.전통적인 방식 (의존 객체를 직접 생성)public class OrderService { private OrderRepository orderRepository = new OrderRepository(); // 직접 생성}DI 적용 방식 (외부에서 주입)public class OrderService { p..

Back_End/Spring 2025.05.21

Spring Boot(스프링부트) Bean 생명주기 관리

Bean이란 무엇인가?Spring Framework에서 Bean이란, Spring IoC(Container)가 관리하는 객체를 의미합니다. 개발자가 직접 new로 객체를 생성하는 것이 아니라, 스프링 컨테이너가 대신 객체를 생성하고, 의존성을 주입하며, 필요 시 제거까지 담당합니다.즉, Bean의 생명주기란 Spring이 해당 객체(Bean)를 어떻게 생성하고, 어떻게 초기화하고, 어떻게 소멸시키는지를 뜻합니다.Bean 생명주기 흐름 요약아래는 Spring Bean의 기본 생명주기 단계입니다. 객체 생성 → 의존성 주입 → 초기화 → 사용 → 소멸 이 과정을 좀 더 세부적으로 나누면 다음과 같습니다:객체 생성 (Instantiation)의존성 주입 (Dependency Injection)Aware 인터..

Back_End/Spring 2025.05.14

스프링 @Bean, @Configuration, @Component 이란?

1. 스프링 빈(Bean)이란?스프링 프레임워크에서 빈(Bean) 은 스프링 컨테이너가 관리하는 객체를 의미합니다. 일반적인 Java 객체와 동일하지만, 스프링의 IoC(Inversion of Control) 컨테이너에 의해 생성 및 관리됩니다.🔹 스프링 빈의 특징스프링 컨테이너가 직접 객체를 생성 및 관리싱글톤(Singleton)으로 관리 (기본 설정 시)DI(Dependency Injection, 의존성 주입) 지원필요할 때 스프링 컨테이너에서 빈을 가져와 사용 가능2. @Bean 어노테이션@Bean은 개발자가 직접 제어할 수 있는 방법으로 스프링 빈을 등록할 때 사용됩니다. 주로 @Configuration과 함께 사용되며, 메서드에 붙여서 해당 메서드가 반환하는 객체를 스프링 컨테이너가 관리하는 ..

Back_End/Spring 2025.03.31

스프링 @Controller와 @RestController의 차이점

1. @Controller란?@Controller는 Spring MVC에서 사용되는 애너테이션으로, 주로 HTML 페이지를 반환하는 경우에 사용됩니다. 뷰(View) 템플릿과 함께 사용되며, ModelAndView 또는 Model 객체를 활용하여 데이터를 전달할 수 있습니다.@Controller 예제아래는 @Controller를 사용하여 뷰를 반환하는 예제입니다.@Controllerpublic class HomeController { @GetMapping("/home") public String home(Model model) { model.addAttribute("message", "Welcome to Spring Boot!"); return "home"; /..

Back_End/Spring 2025.03.28

비밀번호 해싱(Hashing)

해싱이란?해싱(Hashing)은 입력 데이터를 고정된 크기의 값이나 키로 변환하는 과정입니다. 주로 해시 함수(Hash Function)를 사용하여 데이터를 변환하며, 변환된 결과 값을 해시 값(Hash Value) 또는 해시 코드(Hash Code)라고 합니다. 1. 비밀번호를 평문으로 저장하면 안 되는 이유데이터 유출 시 보안 위협: 만약 데이터베이스가 해킹당하면, 저장된 평문 비밀번호가 그대로 노출됩니다.다른 서비스 계정 탈취 가능성: 많은 사용자가 같은 비밀번호를 여러 서비스에서 사용하기 때문에, 하나의 비밀번호가 유출되면 다른 계정도 쉽게 해킹될 수 있습니다.법적 문제: GDPR과 같은 데이터 보호법에서는 사용자 정보를 안전하게 보호하도록 요구합니다. 2. 해싱과 암호화의 차이해싱(Hashing..

Back_End/Spring 2025.03.27

@Component와 @Configuration 비교

Spring Framework에서 자주 사용되는 두 가지 중요한 애노테이션이 있습니다: @Component와 @Configuration. 이 두 애노테이션은 모두 빈(Bean)을 정의하는 데 사용되지만, 사용하는 목적과 동작 방식에서 큰 차이가 있습니다. 이 글에서는 각각의 애노테이션에 대해 상세히 알아보고, 어떤 상황에서 어떤 애노테이션을 선택해야 하는지 명확히 이해할 수 있도록 설명하겠습니다.1. @Component란?@Component는 Spring에서 관리되는 일반적인 빈(Bean)을 정의하기 위해 사용됩니다. Spring 컨테이너는 @Component가 붙은 클래스를 스캔하여 자동으로 빈으로 등록합니다.주요 특징:자동 감지:@Component는 클래스 레벨에서 선언되며, Spring의 컴포넌트 ..

Back_End/Spring 2024.12.26

스프링 핵심 개념: IoC, DI, AOP 알아보기

1. IoC (Inversion of Control, 제어의 역전)IoC란 무엇인가?제어의 역전이란 객체의 생성과 의존성 관리를 개발자가 아닌 프레임워크가 대신 수행하는 것을 의미합니다.애플리케이션의 제어 흐름을 개발자가 아닌 스프링 컨테이너가 관리합니다.IoC의 장점객체 생명주기 관리: 객체 생성, 소멸 등을 컨테이너가 담당하므로 개발자가 신경 쓸 필요가 없습니다.유연성 증가: 코드가 프레임워크에 의존하지 않으므로 변경과 테스트가 용이합니다.결합도 감소: 모듈 간의 의존성이 낮아져 유지보수가 쉬워집니다.IoC 컨테이너 동작 원리스프링의 IoC 컨테이너는 애플리케이션의 객체를 관리하며, 두 가지 주요 구현체가 있습니다:BeanFactory: 기본적인 IoC 컨테이너 기능 제공ApplicationConte..

Back_End/Spring 2024.12.05

Filter와 Interceptor 이해하기

웹 애플리케이션에서 요청/응답 처리를 더 세부적으로 제어하려면 Filter와 Interceptor를 활용합니다. 이 두 가지는 비슷한 역할을 하지만, 사용하는 환경과 적용 시점에서 차이가 있습니다.Filter란?Filter는 Servlet 스펙에서 제공하는 기능으로, 클라이언트 요청이 서블릿에 도달하기 전후에 특정 작업을 수행할 수 있게 해줍니다.Filter의 주요 역할요청/응답 변환: 요청 데이터 가공 또는 응답 데이터 수정.보안 처리: 인증, 인가 로직 추가.로깅: 요청/응답의 세부 정보 기록.Filter 동작 흐름클라이언트 요청이 들어옴.Filter가 요청을 가로채고 필요한 작업을 수행.서블릿으로 요청 전달 또는 요청 차단.서블릿 처리 후 응답이 다시 Filter를 거침.간단한 Filter 코드 예..

Back_End/Spring 2024.11.29

서블릿(Servlet)과 디스패처 서블릿(Dispatcher Servlet)이란?

[ 서블릿(Servlet)이란? ]Servlet은 자바 기반 웹 애플리케이션의 핵심 구성 요소 중 하나로, 클라이언트의 요청(request)을 처리하고 응답(response)을 생성하는 역할을 합니다.Servlet의 주요 특징Java 클래스 기반: HttpServlet 클래스를 상속받아 동작.동적 콘텐츠 생성: HTML, JSON 등 다양한 콘텐츠 타입 생성 가능.서블릿 컨테이너: Tomcat과 같은 컨테이너에서 실행.Servlet 동작 흐름클라이언트 요청: 사용자가 웹 브라우저에서 URL 입력.요청 처리: 서블릿 컨테이너가 요청을 Servlet으로 전달.응답 반환: Servlet이 응답 데이터를 생성하여 클라이언트로 반환.간단한 Servlet 코드 예시import java.io.*;import java..

Back_End/Spring 2024.11.29

Eureka Server(유레카 서버)란?

Service Discovery (서비스 디스커버리)란?서비스 디스커버리는 분산 시스템에서 각 서비스가 동적으로 서로를 찾고 통신할 수 있도록 해주는 메커니즘입니다.왜 필요한가?마이크로서비스 아키텍처에서는 여러 개의 서비스가 독립적으로 실행되며, 각 서비스는 동적으로 실행되거나 종료될 수 있습니다. 이러한 환경에서 서비스들이 서로를 찾고 연결하기 위해 고정된 IP 주소를 사용하는 것은 어렵거나 불가능합니다.이를 해결하기 위해 서비스 디스커버리가 필요합니다.서비스 디스커버리 방식클라이언트 사이드 디스커버리서비스 소비자(클라이언트)가 **디스커버리 서버(서비스 레지스트리)**에 등록된 서비스 목록을 조회하여 적절한 서비스 인스턴스를 선택합니다.예: Netflix Eureka, Consul, Zookeeper..

Back_End/Spring 2024.11.26