Spring의 핵심 개념 4가지
IoC(Inversion of Control) : 객체의 생성 및 생명주기를 개발자가 직접 제어하지 않고, Spring 컨테이너가 대신 관리하는 구조.
이는 객체간 결합도를 낮추고 전체 애플리케이션의 유연성과 확장성을 높이는 중요한 기반이 됨
Bean : IoC 컨테이너가 관리하는 객체이다. Bean들은 XML, Java Config, 애너테이션 등의 방식으로 등록할 수 있다.
Spring이 제공하는 다양한 생명주기 훅을 통해 체계적으로 관리된다.
DI(Dependency Injection) : 객체 간 의존관계를 외부에서 주입하는 방식이다. 테스트 가능성 향상, 유연한 구현체 교체, 관심사 분리 등의 효과를 제공함. 특히 Spring은 생성자 주입을 중심으로 강력한 DI구성을 제공함.
AOP(Aspect Oriented Programming) : 트랜잭션 로깅, 보안 검사와 같은 횡단 관심사를 핵심 로직과 분리하여 관리할 수 있는 구조를 제공함. 코드의 모듈화, 가독성, 재사용성을 크게 향상시킨다
Bean
콩
Spring IoC 컨테이너에 의해 관리되는 객체
일반적인 java 객체(POJO)인데 Spring이 생성, 초기화, 의존성 주입, 소멸 등을 책임지기 때문에 특별 관리 대상임
Spring에게 등록된 객체는 Bean이라고 부른다
String에서 Bean으로 관리할 수 있는 객체들
- @Controller, @Service, @Repository가 붙은 클래스 인스턴스
- @Bean 메서드가 생성하는 return 객체
- XML 설정에서 <bean>으로 등록된 객체
과제에서 다뤘던 Service, Repository 등이 모두 Bean으로 관리된다!!!!
Bean 등록방법
Spring 공식문서는 Java Config 방식을 권장하며, 실무에서는 Java Config와 Annotation Config를 혼용하는 경우가 많음
- XML Config : <bean> 태그 사용, 레거시 환경에서 씀, 이걸 쓰는곳을 탈출하는 것을 권장
- Java Config 방식 : @Configuration(클래스) + @Bean(메서드) 조합, Spring Boot 권장
- Annotation Config 방식 : @Component, @Service, @Repository 사용, 자동 감지 기반
Bean의 범위
Bean은 기본적으로 Singleton(싱글 인스턴스)로 관리됨.
별다른 설정을 하지 않으면 등록된 Bean은 IoC 컨테이너 내에서 유일한 단일 인스턴스로 관리됨
단일 인스턴스이기 때문에 중복을 허용하지 않는다!!
범위 / 설명
singleton / (default) 컨테이너 내 단일 인스턴스
prototype / 요청시마다 새로운 인스턴스 생성(new와 같은 개념같음)
request / HTTP 요청마다 인스턴스 생성(웹 컨텍스트)
session : HTTP 세션마다 인스턴스 생성(웹 컨텍스트)
@Scope("prototype") // default는 singleton이지만 @Scope 어노테이션으로 범위를 정해줌
@Component // 클래스를 bean으로 등록할 때
public class MyBean { }
POJO(Plain Old Java Object) : 특정 프레임워크나 라이브러리에 종속되지 않는 순수한 Java 객체
어떤 어노테이션도, 어떤 상속도 필요없는 자유로운 클래스
Bean은 일반적인 java 객체(POJO)라고 부를 수 있다. Bean은 POJO일 수 있지만 Spring이 이 POJO를 관리하는 순간 Bean이 된다.
모든 Bean은 POJO이지만 모든 POJO는 Bean이 아니다.
//
Bean : IoC컨테이너가 생성하고 관리하는 객체
@Controller, @Service, @Repository 가 붙은 클래스 인스턴스
@Bean 메서드가 생성하는 return 객체
Bean은 POJO형태로 작성된다
POJO(Plain Old Java Object) : 특정 프레임워크나 라이브러리에 종속되지 않는 순수한 Java 객체
Bean은 의존성 주입(DI), 생명주기 관리, 스코프 설정 등을 통해 Spring에서 유연하게 활용됨
이러한 Bean의 개념은 DI, AOP 등 Spring의 핵심 개념들과 유기적으로 연결되어 있다.
핵심 개념 4가지 : IoC, Bean, AOP, DI
'Spring Boot' 카테고리의 다른 글
| Spring 연습예제 1 (0) | 2025.06.24 |
|---|---|
| Spring 핵심 개념 - AOP (3) | 2025.06.24 |
| Spring 핵심 개념 - IoC(Inversion of Control) (0) | 2025.06.19 |
| 테스트 주도 개발(TDD) (1) | 2025.06.19 |
| 객체지향 설계 원칙(DRY, SRP, SoC) (1) | 2025.06.18 |