스프링 프레임워크는 객체 지향 프로그래밍의 장점을 극대화하며 개발자가 객체의 생생, 관리, 의존성 주입 등을 편리하게 처리할 수 있도록 지원하는데 스프링 프레임워크의 핵심 요소 중 하나가 스프링 컨테이너(Spring Container)와 스프링 빈(Spring Bean)이다.
스프링 컨테이너는 애플리케이션에서 사용할 객체를 생성하고 관리하며, 객체 간의 의존성을 설정한다.
IoC(제어 역전) 개념에 기반하여 작동하고 개발자는 객체 생성과 생명 주기 관리를 신경 쓰지 않고 비즈니스 로직에 집중할 수 있다.
객체 생성 및 관리: 빈의 생성, 초기화, 소멸까지의 전 과정을 관리
의존성 주입: 객체 간의 관계를 설정하고 주입
빈 설정 관리: XML, Java Config, 어노테이션을 통한 다양한 설정 지원
BeanFactory를 확장한 인터페이스로, 애플리케이션 개발에 유용한 여러 부가 기능 제공스프링 빈은 스프링 컨테이너에 의해 관리되는 객체, 애플리케이션의 주요 구성 요소(서비스, 레포지토리, 컨트롤러 등)을 의미한다.
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="userService" class="com.example.UserService"/>
</beans>
@Configuration
public class AppConfig {
@Bean
public UserService userService() {
return new UserService();
}
}
@Component
public class UserService {
// Service logic
}
스프링 컨테이너가 애플리케이션을 시작하고 빈을 관리하는 단계별 과정
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
빈 정의 등록
빈 생성 및 초기화
애플리케이션 실행
컨테이너 종료 및 빈 소멸
스프링은 빈의 생명 주기를 관리하기 위해 특정 메서드를 제공.
@Component
public class MyBean {
@PostConstruct
public void init() {
System.out.println("빈 초기화");
}
@PreDestroy
public void destroy() {
System.out.println("빈 소멸");
}
}
3줄 요약
빈 생명주기 콜백, 빈 스코프 관련 내용 작성 예정