본문 바로가기

Spring Introduction/스프링 핵심 원리 - 기본

(12)
09. 빈 스코프 (작성 중!) 💡 본 게시글은 김영한님의 인프런(Inflearn) 강의 스프링 핵심 원리 - 기본편에 대해 공부하고, 정리한 내용입니다. 01. 빈 스코프란? 1) 빈 스코프 스프링에서 빈이라는 용어는 특정한 객체를 지칭합니다. 이 객체는 스프링 컨테이너의 관리를 받아, 스프링 컨테이너가 생명 주기를 관리하고, 의존성 주입을 처리합니다. 이러한 빈의 생명 주기에 대한 범위를 스코프라고 부릅니다. 그래서 빈 스코프라는 말은 결국 '빈이 존재할 수 있는 범위'를 의미합니다. (1) 싱글톤 스코프 우리는 보통 스프링 빈이 스프링 컨테이너가 시작되면서 생성되고, 스프링 컨테이너가 종료될 때까지 유지된다고 배웁니다. 이는 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문입니다. 싱글톤 스코프란, 스프링 컨테이너의 시작과 종..
08. 빈 생명주기 Call Back 💡 본 게시글은 김영한님의 인프런(Inflearn) 강의 스프링 핵심 원리 - 기본편에 대해 공부하고, 정리한 내용입니다. 1. 빈 생명주기 콜백 시작 1) 빈 생명주기 콜백의 필요성 (1) 목적: 스프링 빈은 객체의 생성과 소멸 과정에서 특정 로직을 실행할 필요가 있습니다. 이러한 로직은 자원을 할당하거나 해제하는 데 중요할 수 있습니다. (2) 사용 사례: 예를 들어, 데이터베이스 커넥션 풀은 애플리케이션 시작 시점에 데이터베이스와의 연결을 미리 맺고, 애플리케이션 종료 시점에 이러한 연결을 안전하게 종료해야 합니다. 네트워크 소켓도 마찬가지로, 애플리케이션 실행 중에는 유지되어야 하며, 종료 시점에 적절하게 닫혀야 합니다. (3) 이유: 이러한 작업들은 자원의 효율적 사용과 메모리 누수 방지, 연결..
07. 의존관계 자동 주입 💡 본 게시글은 김영한님의 인프런(Inflearn) 강의 스프링 핵심 원리 - 기본편에 대해 공부하고, 정리한 내용입니다. 1. 다양한 의존관계 주입 방법 의존관계 주입은 주로 4가지 방법을 통해 이루어집니다. 의존 관계 주입은 생성자 주입, 수정자 주입, 필드 주입, 일반 메서드 주입이 있습니다. 1) 생성자 주입(Constructor Injection) (1) 정의 생성자 주입은 클래스의 생성자를 통해 해당 클래스가 의존하는 다른 객체들을 주입받는 방식입니다. 이 방식은 객체 생성 시 필요한 의존성을 모두 받아오므로, 객체가 생성되고 나서는 변경되지 않는 불변 상태를 유지합니다. (2) 특징 단 한 번의 호출 보장: 생성자는 객체 생성 시 단 한 번만 호출되므로, 의존 관계도 한 번만 설정됩니다. 불..
06. 컴포넌트 스캔 💡 본 게시글은 김영한님의 인프런(Inflearn) 강의 스프링 핵심 원리 - 기본편에 대해 공부하고, 정리한 내용입니다. 1. 컴포넌트 스캔과 의존관계 자동 주입에 대한 이해 1) 들어가며 (1) 기존 스프링 빈 등록 방식: 지금까지 스프링 빈을 등록하는 방식은 주로 `@Bean` 어노테이션을 사용한 자바 코드 또는 XML의 `` 태그를 통해 직접 설정 정보를 작성하고, 스프링 빈을 명시적으로 등록하는 방법이었습니다. (2) 문제점: 하지만 이러한 방식은 예제 수준의 간단한 애플리케이션에서는 큰 문제가 되지 않지만, 실제 복잡한 애플리케이션에서는 수십 또는 수백 개의 스프링 빈을 관리해야 하며, 이들을 일일이 설정 정보에 등록하는 것은 매우 번거로운 작업입니다. 뿐만 아니라, 이런 방식은 설정 정보가 ..
05. 싱글톤 컨테이너 💡 본 게시글은 김영한님의 인프런(Inflearn) 강의 스프링 핵심 원리 - 기본편에 대해 공부하고, 정리한 내용입니다. 1. 웹 애플리케이션과 싱글톤 (1) 웹 애플리케이션과 동시다발적 요청 처리 웹 애플리케이션에서는 동일한 서비스에 대해 여러 사용자가 동시에 요청을 보내는 상황이 흔히 발생합니다. 특히 대규모 기업에서 운영하는 웹 서비스의 경우, 이러한 동시다발적인 요청이 수천, 수만, 혹은 그 이상의 규모로 일어나게 됩니다. 스프링 프레임워크는 바로 이런 대규모 웹 애플리케이션 환경에서 효율적으로 서비스를 제공하고자 하는 목적으로 탄생했습니다. (2) 순수 DI 컨테이너의 문제점 스프링 프레임워크를 사용하지 않고, 순수한 DI(Dependency Injection) 컨테이너를 사용하는 경우에는 사..
04. 스프링 컨테이너와 스프링 빈 💡 본 게시글은 김영한님의 인프런(Inflearn) 강의 스프링 핵심 원리 - 기본편에 대해 공부하고, 정리한 내용입니다. 0. 들어가며 이전 게시글에서는 스프링이 나오게 된 개념에 대해 알아보았습니다. 이번 게시글에서는 스프링 자체가 어떻게 동작되는 지를 알아보겠습니다. 03. 스프링 핵심 원리 이해 2 - 객체 지향 원리 적용 💡 본 게시글은 김영한님의 인프런(Inflearn) 강의 스프링 핵심 원리 - 기본편에 대해 공부하고, 정리한 내용입니다. 1. 들어가며 지난 게시물에서는 스프링 프레임워크의 탄생 배경과 그 특징, 그 soo99.tistory.com 1. 스프링 컨테이너의 생성과정 1) 스프링 컨테이너 생성 - 밑의 코드는 스프링 프로젝트가 시작될 때, 가장 먼저 실행되는 코드입니다. publ..
03. 스프링 핵심 원리 이해 2 - 객체 지향 원리 적용하기 💡 본 게시글은 김영한님의 인프런(Inflearn) 강의 스프링 핵심 원리 - 기본편에 대해 공부하고, 정리한 내용입니다. 1. 들어가며 지난 게시물에서는 스프링 프레임워크의 탄생 배경과 그 특징, 그리고 스프링이 어떻게 자바의 대표적인 프레임워크로 자리매김하게 되었는지를 정리하였습니다. 01. 객체 지향 설계와 스프링 - (1) 자바 진영의 추운 겨울과 스프링의 탄생 (이야기) 💡 본 게시글은 김영한님의 인프런(Inflearn) 강의 스프링 핵심 원리 - 기본편에 대해 공부하고, 정리한 내용입니다. 1) 자바 생태계의 한겨울 2000년대 초기 자바 표준 모델로서의 EJB(Enterprise Java Bea soo99.tistory.com 또한, 객체 지향 프로그래밍의 핵심 원칙인 SOLID 중에서도 특..
02. 스프링 핵심 원리 이해 1 - 순수 자바 코드로 예제 만들기 💡 본 게시글은 김영한님의 인프런(Inflearn) 강의 스프링 핵심 원리 - 기본편에 대해 공부하고, 정리한 내용입니다. 1. 스프링 프로젝트 생성 및 설정 1) 필요한 설치 항목 Java 11 IntelliJ 2) 프로젝트 생성 (1) 스프링 부트 스타터 사이트로 이동: [https://start.spring.io](https://start.spring.io] (2) 프로젝트 설정: Project: Gradle Project Spring Boot: 2.3.x Language: Java Packaging: Jar Java: 11 (3) 프로젝트 메타데이터 설정: groupId: hello artifactId: core (4) Dependencies: 선택하지 않음 3) 프로젝트 동작 확인 기본 메인 클..