티스토리 뷰
반응형
의존성 주입(Dependency Injection) 을 이해하기 위해서는 각각의 단어를 이해해야한다.
의존성 (Dependency)
객체 A 가 객체 B 에 의존하고 있는 경우 객체 A 는 객체 B 에 의존하고 있다고 표현한다.
class Engine {
String engineName;
public Engine(String name) {
this.engineName = name;
}
}
class Car {
Engine engine;
public Car() {
this.engine = new Engine();
}
}
위의 예시 코드를 보면 Car 생성자 메소드가 호출할 때 Engine 타입의 객체를 생성하고 있어,
Car 클래스가 Engine 클래스에 의존성을 갖고 있다고 이야기하는 상황인거다.
의존성 이라는 것이 객체 사이의 관계를 의미하는 것이라면 주입은 어떤 것일까?
주입(Injection)
주입은 객체를 생성하여 제공하는 과정을 의미한다.
그러면 생성한 객체를 제공하는 방식은 어떻게 될까?
생성자 주입 (Constructor Injection)
생성자 메소드에 객체를 파라미터로 전달하여 제공하는 방식이다.
class Car {
Engine engine;
public Car(Engine engine) {
this.engine = engine;
}
}
public class Main {
public static void main(String[] args) {
// Engine 객체 생성
Engine engine = new Engine("Engine 1");
// Car 객체 생성시 Engine 객체를 주입
Car car = new Car(engine);
}
}
Setter 주입 (Setter Injection)
객체 생성 후 setter 메소드를 통해 객체를 전달하는 방식
class Car {
Engine engine;
public Car() {
}
public void setEngine(Engine engine) {
this.engine = engine;
}
}
public class Main {
public static void main(String[] args) {
// Engine 객체 생성
Engine engine = new Engine("Engine 1");
Car car = new Car();
car.setEngine(engine);
}
}
필드 주입 (Field Injection)
필드에 직접 객체를 전달하는 방식으로 프레임워크에서 리플렉션을 사용하여 클래스의 필드에 직접 전달하는 방식
스프링 프레임워크 기반의 프로젝트의 경우 @Autowired 어노테이션을 통해 객체를 전달할 수 있다.
public class Car {
@Autowired
Engine engine;
public Car() {
}
}
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- #가상머신
- vuex
- 함수
- vue.js
- 자바스크립트
- git tag
- node
- awesome-vue
- 뉴욕
- backbone.js
- 원하는것이있다면끝까지버텨라
- 외부모듈
- vue
- nextTick
- framework
- javascript
- Android
- browserify
- nodejs
- eventbus
- mocha.js
- node.js
- js
- AndroidContext
- angular
- MarionetteJS
- marionetts.js
- Typescript
- awe-some
- common.js
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함