diff --git a/README.md b/README.md
index ebeffaf..e4a0ed0 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,137 @@
# spring-tutorial-21st
CEOS back-end 21st spring tutorial project
+
+
+
+## Spring이란?
+- 개발 초기에 개발자가 설정하고 관리해야 하는 대부분의 요소
+ (= MVC 계층 구조, 클래스 생성자, 그 외 각 계층에서 필요한 객체 생성, 소멸, 의존성 관리 등의 기능)을 자동으로 처리해주는 프레임워크.
+
+
+- 이를 통해 개발자는 개발 작업에 집중하고, 더 나아가 객체 간 관계의 설정 및 관리 작업을 더 쉽게 할 수 있습니다.
+
+
+## Spring의 Bean은 무엇일까요? - Bean의 라이프 사이클에 대해!
+- Bean : Spring 컨테이너에서 생성, 관리하는 재사용 가능한 **객체**입니다.
+- Bean의 특징
+ (1) 객체(Bean) 간 의존성(연결점)을 설정할 수 있습니다.
+ (2) Ioc, DI의 원리가 적용됩니다.
+
+
+- Bean의 라이프 사이클
+1. @Component 또는 @Bean으로 등록된 객체가 생성됩니다.
+2. 의존성 주입(@Autowired 등)
+3. 초기화(Initaializing Bean, @PostConstruct -> Bean이 생성된 후 실행.)
+4. 애플리케이션이 실행되면서 빈이 사용됩니다.
+5. 소멸(Destroying Bean, @PreDestory -> Bean이 소멸되기 전 실행) : 애플리케이션 종료 시 정리 작업을 수행합니다.
+
+
+
+
+## 스프링 어노테이션(Annotation)에 대해
+- 어노테이션은 무엇일까요?
+ 컴파일러에게 정보를 주는 **주석**( = 메타데이터) 역할을 합니다.
+ 사람이 코드에서 주석을 보고 코드에 대한 정보를 얻듯,
+ @ 뒤의 단어를 통해 컴파일러의 코드 생성에 정보를 주거나, 특정 행위를 하도록 유도합니다.
+ 주석은 프로그램에 영향을 끼치지 않지만 어노테이션은 프로그램의 동작에 다양한 영향을 줍니다.
+
+- 어노테이션의 종류
+
+ **(1) 표준 어노테이션
+ (2) 메타 어노테이션
+ (3) 사용자 어노테이션**
+
+
+
+### 1. 표준 어노테이션
+- 자바에서 기본적으로 제공하는 어노테이션
+- 종류
+1) @Component : 일반적인 Bean 등록
+2) @Service : 서비스 계층(비즈니스 로직 계층)에서 사용합니다.
+3) @Repository : 데이터 접근 계층 (DAO)에서 사용합니다.
+4) @Controller : MVC 패턴에서 컨트롤러 역할에 하는 클래스에 사용합니다.
+5) @RestController : JSON 형태의 응답을 반환하는 API 컨트롤러에서 사용합니다.
+6) @Override : 상위 클래스의 메서드를 오버라이딩 한다는 것을 알립니다.
+7) @SuppressWarning : 컴파일 경고 메시지가 나타나지 않도록 합니다.
+
+
+
+### 2. 메타 어노테이션
+- 다른 어노테이션에서도 사용되는 어노테이션
+- 종류
+1) @Autowired → 자동으로 의존성을 주입합니다.
+2) @Qualifier → 특정한 Bean을 지정하여 주입합니다.
+3) @RequiredArgsConstructor → Lombok을 활용한 의존성을 주입합니다.
+
+
+
+### 3. 사용자 어노테이션
+- 사용자가 직접 정의하여 사용하는 어노테이션
+- 종류
+1) @Aspect → AOP를 정의하는 클래스.
+2) @Before → 메서드 실행 전에 동작합니다.
+3) @After → 메서드 실행 후 동작합니다.
+4) @Around → 메서드 실행 전후로 동작합니다.
+
+
+
+
+
+## 단위 테스트 vs 통합 테스트
+
+- 테스트를 하는 이유?
+개발 과정에서의 문제점을 미리 발견할 수 있습니다.
+JS에서 타입 체크를 하지 않아서 타입 문제가 발생한다면,
+TS에서는 타입 지정을 미리 해서 타입 변환 문제를 미리 방지하는데, 이러한 논리와 유사합니다.
+테스트를 미리 해봄으로써 발생할 수 있는 문제 상황을 줄일 수 있습니다.
+
+- 테스트의 종류
+1. 단위 테스트(Unit Test)
+한 개의 메서드 또는 클래스만을 테스트합니다.
+다른 컴포넌트(데이터베이스, 네트워크 등)와 분리하여 테스트하며,
+독립적이고 빠르게 실행이 가능합니다.
+
+
+3. 통합 테스트(Integration Test)
+전체 시스템(데이터베이스, API, 서비스 등)을 포함하여 테스트합니다.
+실제 DB, 외부 API 등과 연동되는 환경에서 실행합니다.
+환경 설정이 필요하여 실행 속도가 단위 테스트보다 느립니다.
+
+
+
+## Spring이 지원하는 기술들 - IoC/DI, AOP, PSA
+
+1. **IoC** (Inversion of Control, 제어의 역전)
+- 객체의 생성과 생명주기를 개발자가 직접 관리하는 것이 아니라, 스프링이 대신 관리합니다.
+- 기존에는 new 키워드를 사용해 객체를 생성했지만, 스프링에서는 자동으로 생성합니다.
+
+2. **DI** (Dependency Injection, 의존성 주입)
+- 객체 간의 의존성을 스프링이 관리해 줍니다.
+- @Autowired, @Component, @Service 등을 활용하여 코드의 결합도를 낮출 수 있습니다.
+
+3. **AOP** (Aspect-Oriented Programming, 관점 지향 프로그래밍)
+- 공통적인 기능(로깅, 트랜잭션 등)을 분리하여 관리합니다.
+- @Aspect, @Before, @After, @Around 등의 어노테이션을 사용합니다.
+
+4. **PSA** (Portable Service Abstraction, 서비스 추상화)
+- JDBC, 트랜잭션, 메시징 등 다양한 기술을 쉽게 사용할 수 있도록 스프링이 추상화를 제공합니다.
+
+
+
+
+## 새롭게 알게 된 점
+스프링의 기본 문법과 이론에 대해 알 수 있는 기회였습니다.
+이론에 집중해서 정리를 해 보았는데 다음에는 이론 + 실습을 적절히 섞어 작성해보려 합니다 : ]
+
+
+
+
+---
+
+
+
+
+
+
+
+