반응형
스프링 IoC 컨테이너의 역할에 대해서 알아보자.
- 스프링 IoC 컨테이너의 역할은 ?
- 애플리케이션 개발자가 생성한 설정에 따라 빈(Bean)을 생성하고 연결하는 역할을 함.
Bean / Wiring 에 대해서 알아보자.
- Bean 의 대표적인 어노테이션 종류
- @Component 어노테이션
- Spring Bean 을 정의하는 가장 일반적인 방법
- 예시
- @Component 어노테이션
@Service 어노테이션
- 비즈니스 서비스 구성요소에 사용됨.
- 예시
그럼, 스프링 IoC 컨테이너는 빈을 서로 묶는 방법을 어떻게 알 수 있을까?
- 예를들어, 위에서 제시한 예시를 활용해 보자.
- DataThubServiceImpl 클래스의 Bean 은 BusinessThubServiceImpl 클래스의 Bean 에 주입되어야함.
- 주입시키는 방법은 아래와 같음.
- @Autowired 어노테이션을 지정하면됨.
- 예시
위와 같이 Bean 에 대한 와이어링을 정의 했으므로 테스트하기 위해서는 DataThubService를 구현해야함.
- 즉, DataThubService의 구현체인 DataThubServiceImpl을 구현하면 됨.
- 예시
그럼, 스프링 IoC 컨테이너를 생성하는 방법을 알아보자.
- 스프링 IoC 컨테이너 생성 방법은 아래 2가지 방법이 존재함.
- 빈 팩토리
- 모든 스프링 IoC 기능(빈 생명 주기 및 와이어링)의 기초.
- 다시말해서, 스프링의 IoC를 담당하는 핵심 컨테이너를 가리킴.
- 빈을 등록하고, 생성하고, 조회하고 돌려주고, 그 외에 부가적인 빈을 관리하는 기능을 담당함.
- 모든 스프링 IoC 기능(빈 생명 주기 및 와이어링)의 기초.
- 애플리케이션 콘텍스트
- 기본적으로 엔터프라이즈 컨텍스트에서 일반적으로 필요한 추가 기능을 사용하는 빈팩토리의 상위 집합.
- 다시말해서, 빈 팩토리를 확장한 IoC 컨테이너다.
- 빈을 등록하고 관리하는 기본적인 기능은 빈팩토리와 동일함.
- 여기에 스프링이 제공하는 각종 부가 서비스를 추가로 제공함.
- 빈 팩토리라고 부를 때는 주로 빈의 생성과 제어의 관점에서 이야기하는 것이고, 애플리케이션 컨텍스트라고 할 때는 스프링이 제공하는 애플리케이션 지원 기능을 모두 포함해서 이야기하는 것이라고 보면 됨.
- 스프링에서는 애플리케이션 컨텍스트라는 용어를 빈 팩토리보다 더 많이 사용함.
- ApplicationContext라고 적으면 애플리케이션 컨텍스트가 구현해야 하는 기본 인터페이스를 가리키는 것이기도 함.
- 그리고, ApplicationContext는 BeanFactory를 상속함.
- 주로사용하는 것은 ?
- 보통은 빈 팩토리를 바로 사용하지 않고 이를 확장한 애플리케이션 컨텍스트를 이용함.
- 그리고, 스프링에서는 모든 시나리오에서 애플리케이션 콘텍스트를 사용할 것을 권장함.
- 빈 팩토리
그럼, 애플리케이션 콘텍스트를 사용해 스프링 IoC 컨테이너를 생성해 보자.
- 애플리케이션 콘텍스트에 대해 구성방법은 아래 2가지가 존재함.
- JAVA 구성
- XML 구성
- 아래에서 보다 자세하게 알아보자
- 첫째, JAVA 구성에 대해서 알아보자
- 아래 예시는 JAVA구성으로 콘텍스트를 시작하는 방법을 보여줌.
- 애플리케이션 콘텍스트를 AnnotationConfigApplicationContext 로 구동하기 위해 main 메소드를 사용함.
- 예시
- 첫째, JAVA 구성에 대해서 알아보자
- 설명
- "com.thubmaster.spring" 패키지에 대한 구성 요소 검사로 @Configuration 어노테이션을 사용해 스프링 구성 클래스인 SpringContext를 정의함.
- "com.thubmaster.spring" 패키지를 검색해 BusinessThubServiceImpl / DataThubServiceImpl 빈을 찾음.
- BusinessThubServiceImpl 에는 DataThubService에 대한 의존성이 존재함.
- 즉, BusinessThubServiceImpl를 위한 빈이 생성되고, DataThubServiceImpl을 위해 생성된 빈은 setter를 통해 자동으로 채워짐.
- 애플리케이션 콘텍스트를 JAVA 구성으로 생성함.
- AnnotationConfigApplicationContext
- 콘텍스트가 시작되면 비즈니스 서비스 빈을 가져와야 함.
- 여기서는 빈(BusinessThubService.class) 의 타입을 인수로 전달하는 getBean을 사용함.
- 둘째, XML 구성에 대해서 알아보자.
- 아래 예시는 XML구성으로 콘텍스트를 시작하는 방법을 보여줌.
- 아래와 같은 2가지 단계가 존재함.
- XML 스프링 구성 정의.
- XML 구성으로 애플리케이션 콘텍스트 실행.
- 아래와 같은 2가지 단계가 존재함.
- 아래에서 자세히 알아보자.
- 첫째, XML 스프링 구성 정의
- 아래 디렉토리에 존재함.
- 디렉토리 이름 : "/src/main/resources"
- 구성파일 이름 : BusinessThubApplicationContext.xml
- 예시
- 아래 디렉토리에 존재함.
- 첫째, XML 스프링 구성 정의
- 아래 예시는 XML구성으로 콘텍스트를 시작하는 방법을 보여줌.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
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
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<context:component-scan base-package="com.thubmaster.spring"/>
</beans>
- 설명
- 구성요소 검사는 "context:component-scan" 을 사용해 정의 됨.
- 둘째, XML 구성으로 애플리케이션 콘텍스트 실행.
- 애플리케이션 콘텍스트를 ClassPathXmlApplicationContext 로 구동하기 위해 main 메소드를 사용함.
- 예시
- 설명
- "com.thubmaster.spring" 패키지를 검색해 BusinessThubServiceImpl / DataThubServiceImpl 빈을 찾음.
- BusinessThubServiceImpl 에는 DataThubService에 대한 의존성이 존재함.
- 즉, BusinessThubServiceImpl를 위한 빈이 생성되고, DataThubServiceImpl을 위해 생성된 빈은 setter를 통해 자동으로 채워짐.
- 애플리케이션 콘텍스트를 XML 구성으로 생성함.
- ClassPathXmlApplicationContext
- 콘텍스트가 시작되면 비즈니스 서비스 빈을 가져와야 함.
- 여기서는 빈(BusinessThubService.class) 의 타입을 인수로 전달하는 getBean을 사용함.
결론
- 스프링 IoC 컨테이너의 역할은 애플리케이션 개발자가 생성한 설정에 따라 빈(Bean)을 생성하고 연결하는 역할을 함.
- 아래와 같이 Bean 의 대표적인 어노테이션 종류가 있음.
- @Component 어노테이션
- @Service 어노테이션
- @Repository 어노테이션
- 스프링 IoC 컨테이너 생성 방법은 아래 2가지 방법이 존재함.
- 빈 팩토리
- 애플리케이션 콘텍스트
- 애플리케이션 콘텍스트에 대해 구성방법은 아래 2가지가 존재함.
- JAVA 구성
- XML 구성
- 오늘도 스프링 IoC 컨테이너 지식에 대한 마술(?) 한가지 획득완료, 감사합니다. ^^
300x250
'좋아하는 것_매직IT > 1.spring' 카테고리의 다른 글
8.Spring, 스프링 빈(Bean) 스코프와 중요한 어노테이션에 대해서 알아봅시다. ^^ (0) | 2021.01.02 |
---|---|
7.Spring, 의존성 주입(dependency injection) 타입에 대해서 알아봅시다. ^^ (0) | 2021.01.02 |
5.Spring, 의존성 주입에 대해서 이해한번 해봅시다. ^^ (0) | 2021.01.02 |
4.Spring, 스프링 프레임워크 5.0 의 새로운 기능에 대해서 알아볼까요?^^ (0) | 2021.01.02 |
3.Spring, 스프링 프로젝트에는 어떤것이 있을까요? ^^ (0) | 2021.01.01 |