스프링의 개념과 간단한 의존성 주입을 해보자
Spring Framework란?
자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 스프링(Spring)이라고 불린다.
쉽게 말해 자바를 사용하는 환경에서 애플리케이션을 개발하기 위한 틀이라고 생각하면 된다.
Spring Framework 구조
POJO(Plain Old Java Object) Programming
복잡하고 제한이 많은 기술을 사용하는 것이 아닌 순수한 자바 객체만을 사용한 프로그래밍을 필요로 한다.
Spring에서 이러한 방식으로 생성된 객체, 즉 POJO를 Beans라고 부른다.
IoC (Inversion of Control)
제어의 역전
개발자가 직접 객체를 언제 생성하고 없앨지 결정하는 것이 아닌 IoC Container에게 맡긴다는 뜻이다.
POJO 객체의 생성에서 생명주기의 관리까지를 IoC Container에게 담당시킴으로써 개발에 있어서 편의성과 재사용성의 극대화를 추구하는 개념이다.
IoC 구현 방법에는 DL, DI 두가지가 있다.
DL (Dependency Lookup)
의존성 검색
컨테이너에서 제공하는 API를 이용해 사용하고자 하는 Bean을 저장소에서 Lookup하는 것을 말한다.
DI (Dependency Injection)
의존성 주입
각 객체간의 의존성을 컨테이너가 자동으로 연결해주는 것으로 개발자가 Bean 설정파일에 의존관계가 필요한 정보를 추가해주면 컨테이너가 자동적으로 연결해준다.
Setter Injection, Constructor Injection(생성자 주입)의 2가지 방법이 있다.
⭐ 오늘 실습할 핵심 내용 ⭐
1 |
|
1 |
|
Training
Spring에서의 Bean의 생성과 의존성 주입의 과정을 실습해보자.
DTO 생성
Score.java
1 |
|
Info.java
1 |
|
MyData.java
1 |
|
DI (Dependency Injection)
Bean을 생성해서 의존성 주입을 진행한다.
AppContextQuiz.xml
Bean 생성
Bean을 생성할 때 <bean>
태그를 사용하며 이름과 해당 클래스를 지정해주면 된다.
1 |
|
이때 정한 이름은 다른 Bean에서 사용하거나 ApplicationContext를 이용해서 class 내부로 불러올 수 있다.
1 |
|
1 |
|
생성자를 이용한 주입
1 |
|
<constructor-arg />
태그를 사용하면 생성자 주입을 할 수 있다.
이때 DTO에서 만든 생성자를 통해 의존성 주입이 이루어진다.
1 |
|
1 |
|
Setter를 이용한 주입
1 |
|
<property>
태그를 사용하면 DTO에서 선언한 setter함수를 통해 의존성 주입을 할 수 있다.
1 |
|
해당 xml을 통해 의존성 주입이 성공적으로 이루어졌다면 MyData Bean은 다음과 같은 구조를 가질 것이다.
실행
Main class에서 Bean을 호출하여 실행시켜보자
1 |
|
결과
1 |
|
Annotation @
Bean을 생성하고 의존성을 주입하는 일련의 과정을 축약할 수 있는 기능이다.
@Component
XML 설정 없이 자동으로 Bean을 등록한다.
1 |
|
@Autowire
자동으로 빈을 찾아서 주입 (타입으로 찾는다.)
1 |
|
@Resource(name=”testBean”)
여러개의 bean이 있어서 겹칠 가능성이 있을 때 정확하게 가리키기 위해 사용한다.
1 |
|
Context.xml
1 |
|