일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- MST
- Spring Framework
- back-end
- spring-boot
- Web-BackEnd
- Graph
- 시뮬레이션
- 그래프
- spring
- 완전탐색
- Integer
- 구현
- bruteforce
- DFS
- BFS
- Disjoint-set
- Union-FInd
- cycle
- 최소신장트리
- 삼성청년SW아카데미
- HashMap
- Kruskal
- java
- ==
- Floyd-Warshall
- ssafy서울
- Prim
- SSAFY
- web
- equals
- Today
- Total
devlog
🌱Spring Framework : Dependency Injection 본문
1. Dependency Injection
일반적으로 Java 프로그래밍에서 new
키워드를 이용하여 객체를 생성한다. 이러한 코드의 경우 객체간의 의존성이 높아 하나의 코드를 수정하게 되면 의존성이 있는 코드들 전체를 수정해야 하고 그럴 때마다 재컴파일 하는 과정이 필요하다.
Spring Framework 에서는 의존성을 줄이기 위해서 인터페이스를 활용한 객체 모델을 주로 사용한다. 또한 Container를 이용하여 Application에서 필요에 의해 객체를 생성하는 것이 아닌 Container가 필요한 인스턴스를 공급해 줌으로써
객체사이의 의존성을 줄이고 객체사이의 의존 관계가 객체가 아닌 외부에 의해서 설정되는 이러한 구조를 Dependency Injection 줄여서 DI 라는 용어로 부른다.
2. Inversion of Control
Inversion of Control , IoC는 DI 와 같은 개념으로 객체의 생성에서부터 의존관계 설정, 생명주기의 관리까지 모든 객체에 대한 제어권이 뒤바뀐 것을 의미한다.
IoC는 정확히 말하자면 DI 보다는 좀 더 크고 포괄적인 개념으로 사용되며 다음과 같은 관계가 성립한다.
3. Dependency Injection 의 종류
Dependency Injection 은 다음과 같이 3가지 종류로 나뉘어진다.
- Setter Injection
- Setter 를 이용한 Dependency Injection
- Constructor Injection
- Constructor 를 이용한 Dependency Injection
- Method Injection
일반적으로 Spring Framework 에서는 Setter 과 Contructor 를 이용한 DI를 사용한다.
4. Setter Injection
클래스 사이의 의존관계를 Setter 메서드를 이용하여 설정한다.
📃 Foo.java
class Foo {
private Bar bar;
public void setBar(Bar bar) {
this.bar = bar;
}
}
📃 Context.xml
<bean id="foo" class="Foo">
<property name="bar" ref="bar"/>
</bean>
<bean id="bar" class="Bar"/>
만약 Setter의 파라미터가 여러개일 경우 여러개의 파라미터에 대한 값들을 모두 값을 전달해 주어야 한다. 이 때 name
을 통해 각 파라미터를 구분한다.
5. Constructor Injection
클래스 사이의 의존 관게를 생성자를 이용하여 설정한다.
📃 Foo.java
class Foo {
private Bar bar;
public void setBar(Bar bar) {
this.bar = bar;
}
}
📃 Context.xml
<bean id="foo" class="Foo">
<constructur-arg ref="bar"/>
</bean>
<bean id="bar" class="Bar"/>
Setter Injection 과 마찬가지로 여러개의 파라미터가 생성자의 파라미터로 전달될 경우 각각의 파라미터들에 대해 모두 값이 전달되어야 하며, name
을 통해 각 파라미터를 구분한다.
Context.xml 을 작성할 때 작성되는 순서는 상관이 없으며, <bean>
태그 하나당 인스턴스 하나가 생성된다.
'Spring > 이론' 카테고리의 다른 글
IoC 컨테이너 : 스프링 IoC 컨테이너와 빈 (0) | 2020.08.11 |
---|---|
🌱Spring Framework : MyBatis (0) | 2020.05.26 |
🌱Spring Framework : Spring Web MVC (0) | 2020.05.19 |
🌱Spring Framework : Aspect-Oriented Programming (0) | 2020.05.19 |
🌱Spring Framework : 스프링 프레임워크 구조 (0) | 2020.05.18 |