스프링(Spring) 및 자바(JAVA)

스프링 부트 개념 정리 - 이론 01

Dev.99_tale 2025. 3. 6. 10:41

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 등을 사용하여 의존성 주입 가능

🔹 빈 등록 방법

  1. @Component 사용
@Component
public class MyService {
    public void doSomething() {
        System.out.println("서비스 실행!");
    }
}
  1. @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