0121 | 스프링의 정석 :: 3-7(SPRING DI 이론 3)
0121 | 스프링의 정석 :: 3-6 (SPRING DI 이론 2)
0120 | 스프링의 정석 :: 3-5 (SPRING DI 이론 1) SPRING DI 이론 1 1. bean이란? [복잡] Java Beans - 재사용 가능한 컴포넌트, 상태 (iv), getter & setter, no-args constructor 👇 [간단] Servlet & JSP bean - MVC의 Model (데이터
ala-nueva.tistory.com
6. IoC와 DI
✔ IoC (Inversion of Control) inverts the flow of control as compared to the traditional control flow
: 제어의 역전
: 제어의 흐름을 전통적인 방식과 다르게 뒤바꾸는 것
: 전통적인 방식은 사용자 코드가 Framework코드를 호출한다면, IoC는 변하는코드/변하지않는 코드를 분리하여 Framework 코드가 사용자 코드를 호출한다.
: if, for 문같은 실행 흐름이 바뀜
✔ DI (Dependency Injection) - the passing of a dependency into the client that uses it
: 의존성 주입.: 사용할 객체를 외부에서 주입 받는 것
Car car = new Car();
car.drive(new SuperEngine());
void drive(Engine engine){ // engine이 superEngine()을 호출
engine.start();
}
7. 스프링 애너테이션 - @Autowired
: 인스턴스변수 (iv), setter, 참조형 매개변수를 가진 생성자, 메서드에 적용
: 생성자는 Autowired생략가능. 없어도 주입해준다.
: Spring container에서 타입으로 빈을 검색해서 참조변수에 자동 주입 (DI)
: 검색된 빈이 n개이면, 그 중에 참조변수와 이름이 일치하는 것을 주입.
👉 주입 대상이 변수일때, 검색된 빈이 1개 아니면 예외 발생 // 변수니까 반드시 1개
👉 주입 대상이 배열일 때, 검색된 빈이 N개라도 예외 발생 X // 배열이니까 여러개 가능
👉 @Autowired(required=false)일 때, 주입할 빈을 못찾아도 예외 발생 X
* 생성자가 하나일때에는 @Autowired생략가능. 생성자가 여러개일때, 어느생성자가 주입될지 @Autowired를 붙이는게 좋음
public Car(){}
//@Autowired
public Car(@Value ("red") String color,@Value("100") int oil, Engine engine, Door[] doors) {
this.color = color;
this.oil = oil;
this.engine = engine;
this.doors = doors;
}