❑ IoC 컨테이너 사용하기
Spring Bean Configuration을 읽어객체를 생성하고 조립해주는 Spring의 구체적 객체는 ApplicationContext(Interface) 다.
SpringConfig를 넘기는 방식에 따라 4가지로 분류된다
- ClassPathxmlApplicationContenxt: Application의 root부터 경로를 지정할 때 (대표적인 구현체)
- FileSystemXmlApplicationContenxt: xml 파일의 directory 경로
- XmlWebApplicationContenxt: SpringConfig.xml을 웹에 등록해서 사용
- AnnotationConfigApplicationContenxt: Annotation을 스캔하는 방식으로 사용
아래 예제를 통해 IoC 컨테이너에 등록된 Bean을 사용해보자
1) Spring Bean 등록
ElectricMotor (Bean으로 등록될 Class)
package com.test.di;
public interface PowerUnit {
void printPowerType();
}
public class ElectricMotor implements PowerUnit {
@Override
public void printPowerType() {
system.out.println("ElectricMotor");
}
}
- IoC 컨테이너에 Bean으로 등록될 Class
- printPowerType() 메서드가 잘 실행되는지 테스트 예정이다
SpringConfig.xml (xml 형식의 Spring Bean Configuration)
<?xml version="1.0" encoding="UTF-8"?>
<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-3.0.xsd">
<bean id="electricMotorBean" class="com.test.di.ElectricMotor"/>
</beans>
- SpringConfig.xml는 src/main/resource 또는 그 하위 경로에 있어야 한다
- Bean 구분자로 id="electricMotorBean" 설정
2) IoC 컨테이너 사용(ClassPathxmlApplicationContenxt)
public void client() {
ApplicationContext context = new ClassPathXmlApplicationContext("./SpringConfig.xml");
ElectricMotor electricMotorBean1 = (ElectricMotor) context.getBean("electricMotorBean");
System.out.println("id 속성으로 Bean을 꺼내는 방식");
electricMotorBean1.printPowerType();
ElectricMotor electricMotorBean2 = context.getBean(ElectricMotor.class);
System.out.println("자료형으로 Bean을 꺼내는 방식");
electricMotorBean2.printPowerType();
}
- 프로젝트를 시작하면 SpringConfig.xml에 명시한대로 Spring이 Bean을 생성, 조립(DI)한 뒤 IoC컨테이너에 담아둔다.
- Bean을 사용하려면 위와 같이 ApplicationContext를 정의해 id 또는 자료형 방식으로 사용할 수 있다.
- id 방식으로 사용할 경우 형변환을 해줘야하기 때문에 일반적으로 자료형이 선호되는 방식이다.
'Back-End > Spring' 카테고리의 다른 글
[Spring] Annotation을 이용한 DI (1) @Component, @AutoWired (0) | 2022.01.17 |
---|---|
[Spring] Collection Bean 생성하기 - XML Config (0) | 2021.12.14 |
[Spring] 값(Value) 주입 설정 방법 - XML Config (0) | 2021.07.24 |
[Spring] 의존성 주입 방법(Setter, 생성자 방식) - XML Config (0) | 2021.07.17 |
[Spring] 의존성 주입(DI)과 IoC 컨테이너의 개념 (0) | 2021.07.16 |