Spring Bean은 Spring Framework에서 중요한 역할을 하는 개념입니다. Spring IoC(Inversion of Control) 컨테이너에 의해 관리되는 객체로, 애플리케이션의 핵심을 이루는 자바 객체입니다.
- 특징 : Bean은 클래스의 등록 정보, Getter/Setter 메서드를 포함하며, 컨테이너에 사용되는 설정 메타데이터로 생성됩니다. 설정 메타데이터는 XML 또는 자바 어노테이션, 자바 코드로 표현되며, 컨테이너의 명령과 인스턴스화, 설정, 조립할 객체 등을 정의합니다.
@Bean 어노테이션을 통해 메서드로부터 반환된 객체를 Spring 컨테이너에 등록할 수 있습니다.
@Configuration
public class AppConfig {
@Bean(name = "customBeanName")
public MyBean myBean() {
return new MyBean();
}
}
Spring Bean의 구성 요소
- class: Bean으로 등록할 Java 클래스.
- id: Bean의 고유 식별자.
- scope: Bean의 범위를 정의(singleton, prototype 등).
- constructor-arg: Bean 생성 시 생성자에 전달할 파라미터.
- property: Bean 생성 시 setter에 전달할 인수.
<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="myBean" class="com.example.MyBean">
<property name="anotherBean" ref="anotherBean"/>
</bean>
<bean id="anotherBean" class="com.example.AnotherBean"/>
</beans>
Spring 컨테이너와의 관계
- ApplicationContext: Spring 컨테이너 중 하나로, @Configuration이 붙은 클래스를 설정 정보로 사용합니다. 이 설정 정보 내의 @Bean 어노테이션이 붙은 메서드를 호출하여 반환된 객체를 모두 Spring 컨테이너에 등록합니다.
- BeanFactory와 ApplicationContext: BeanFactory는 Spring 컨테이너의 최상위 인터페이스로, ApplicationContext는 이를 상속받아 좀 더 확장된 기능을 제공합니다.
IOC 관련 주요 어노테이션
@Component: 클래스를 Bean으로 등록하며, Component Scan을 통해 자동으로 탐지되어 Spring 컨테이너에 등록됩니다.
@Autowired: 의존성 주입(Dependency Injection)에 사용되며, Spring이 자동으로 의존 객체를 Bean에서 찾아 연결합니다.
@Configuration: 클래스가 Bean 구성 클래스임을 나타내며, 하나 이상의 @Bean 어노테이션이 달린 메서드를 포함하고 있음을 의미합니다.
@Bean: 메서드 레벨에서 사용되며, 해당 메서드가 생성하고 반환하는 객체를 Spring 컨테이너에 Bean으로 등록합니다.
@ComponentScan: @Component 어노테이션이 붙은 클래스를 스캔하여 Spring 컨테이너에 Bean으로 등록합니다.
@EnableAutoConfiguration: Spring Boot의 자동 설정을 활성화하는데 사용됩니다.
'웹개발 > spring && springboot' 카테고리의 다른 글
SPRING 스케쥴러(Scheduler) (0) | 2024.03.28 |
---|---|
spring 프로젝트의 문서화 (0) | 2024.03.28 |
Spring mvc의 핵심 구성 요소 (0) | 2024.03.28 |
spring데이터 전달 @requestbody @requestparam @modelattribute (0) | 2024.03.28 |
스프링 인터셉터(Interceptor) (0) | 2024.03.17 |