Spring Boot with JPA – 스프링 개념 잡기
스프링을 처음 접하는 개발자라면, 기본 개념을 확실히 이해하는 것이 중요합니다.
이 글에서는 스프링의 핵심 개념을 정리하고, 필수적인 개념들을 쉽게 설명하겠습니다.
✅ 스프링(Spring)은 프레임워크이다
"프레임은 틀, 워크는 동작 – 스프링이 제공하는 틀 안에서 개발해야 한다!"
스프링은 개발자가 보다 효율적이고 일관된 방식으로 애플리케이션을 개발할 수 있도록 돕는 프레임워크(Framework) 입니다.
✅ 스프링은 오픈소스이다
"소스코드가 공개되어 있어, 내부를 수정할 수도 있고 기여도 가능하다!"
스프링은 오픈소스(Open Source) 프레임워크로, 공식적으로 코드가 공개되어 있습니다. 따라서, 내부 코드를 분석하거나, 개선하여 오픈소스 커뮤니티에 컨트리뷰트(기여) 할 수도 있습니다.
✅ 스프링은 IoC 컨테이너를 가진다
"Spring IoC 컨테이너는 객체를 대신 생성하고, 필요한 곳에 알아서 넣어주는 시스템이다!"
IoC (Inversion of Control, 제어의 역전) 이란, 객체의 생성 및 관리를 개발자가 직접 하지 않고, 스프링이 대신 처리하는 개념입니다.
🔹 IoC 관련 개념 정리
| 용어 | 설명 |
| Class | 설계도 역할을 하는 클래스 |
| Object | 실체화가 가능한 객체 |
| Instance | 메모리에 올라가 실제로 동작하는 객체 (즉, 실체화가 된 것을 의미) |
🔹 예제
- Character 클래스(설계도) → 누누, 케이틀린, 아무무(객체)
- 가구(추상적인 개념) → 의자, 침대(객체) → 메모리에 올라가면 Instance
📌 원래는 개발자가 직접 객체를 생성하고 관리했지만, 스프링 IoC 컨테이너가 이를 대신 수행합니다.
즉, "객체의 제어권(주도권)이 개발자가 아닌 스프링에게 넘어간 것" 이것이 바로 제어의 역전(IoC) 입니다!
✅ 스프링은 DI(의존성 주입)를 지원한다
"필요한 객체를 직접 생성하는 대신, 스프링이 대신 만들어서 넣어준다!"
🔹 DI(Dependency Injection, 의존성 주입)란?
DI는 객체 간의 의존 관계를 스프링이 자동으로 관리하여 필요한 곳에 자동으로 주입해주는 기술입니다.
| 방식 | 설명 | 장점 | 단점 |
| 생성자 주입 (추천!) | 생성자를 통해 객체를 주입 | 객체 변경이 용이, 테스트 편리 | 코드가 약간 길어질 수 있음 |
| 필드 주입 (비추천) | @Autowired 필드에 직접 선언 | 코드가 짧음 | 테스트 어려움, 변경 불가능 |
| Setter 주입 | Setter 메서드를 통해 주입 | 필요할 때만 주입 가능 | 안정성이 떨어짐 |
📌 "DI를 사용하면 객체 생성 및 관리의 부담을 덜 수 있다!"
✅ 빈(Bean)이란?
"스프링 IoC 컨테이너가 관리하는 객체"
스프링에서 Bean(빈) 은 스프링 IoC 컨테이너가 생성하고 관리하는 객체를 의미합니다.
🔹 빈(Bean)의 특징
- 스프링이 직접 관리 → 개발자가 직접 생성하지 않아도 됨
- 싱글톤이 기본 → 한 번만 생성되어 여러 곳에서 공유됨
- 필요한 곳에 자동 주입(DI) → @Autowired 등을 사용하여 의존성 주입 가능
🔹 빈 등록 방법
- @Component 사용
@Component
public class MyService {
public void doSomething() {
System.out.println("서비스 실행!");
}
}
- @Bean 사용 (직접 등록)
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyService();
}
}
📌 "스프링 빈은 IoC 컨테이너가 관리하는 객체이며, 자동으로 생성되고 주입된다!" 🚀
✅ 스프링의 기본 빈(Bean)은 싱글톤으로 관리된다
"Spring의 기본 빈은 싱글톤이어서, 한 번만 생성되고 계속 재사용된다!"
🔹 싱글톤(Singleton)이란?
- 하나의 객체를 애플리케이션 내에서 단 한 번만 생성하여 공유하는 디자인 패턴
- 메모리 절약, 성능 향상, 일관된 상태 유지
📌 "스프링은 기본적으로 싱글톤을 사용하여 객체를 생성하고 관리한다!"
🔥 핵심 정리
| 개념 | 설명 |
| IoC (제어의 역전) | 객체 생성을 스프링이 대신 관리하는 것 |
| DI (의존성 주입) | 필요한 객체를 자동으로 주입하는 것 |
| 싱글톤 패턴 | 객체를 한 번만 생성하고 재사용하는 것 |
📢 마무리
스프링은 IoC 컨테이너를 기반으로 DI와 싱글톤을 활용하여 객체를 효율적으로 관리합니다.
이를 통해 개발자는 비즈니스 로직에 집중할 수 있고, 유지보수도 훨씬 쉬워집니다!
https://getinthere.tistory.com/9
스프링부트 with JPA 1강 - 스프링이란!
1. 스프링이란? 스프링은 프레임워크이다. 스프링은 오픈소스이다. 스프링은 IoC 컨테이너를 가진다. 스프링은 DI 를 지원한다. 스프링은 엄청나게 많은 필터를 가지고 있다. 스프링은 엄청나게
getinthere.tistory.com
'스프링(Spring) 및 자바(JAVA)' 카테고리의 다른 글
| 스프링 부트 개념 정리 - 이론06 (0) | 2025.03.08 |
|---|---|
| 스프링 부트 개념 정리 - 이론05 (0) | 2025.03.08 |
| 스프링 부트 개념 정리 - 이론04 (1) | 2025.03.07 |
| 스프링 부트 개념 정리 - 이론03 (0) | 2025.03.07 |
| 스프링 부트 개념 정리 - 이론02 (0) | 2025.03.06 |