Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Oracle
- 백준
- 시큐리티
- 리눅스
- 네트워크
- 스프링
- baekjoon
- backjoon
- 플러터
- javascript
- CS지식
- 데이터
- spring
- JPA
- 스프링 부트 쇼핑몰 프로젝트 with JPA
- 스프링부트
- 자바스크립트
- Flutter
- 파이썬
- Java
- CS
- DB
- Spring Security
- postgresql
- 프로그래머스
- 자료구조
- python
- springboot
- 데이터베이스
- 자바
Archives
- Today
- Total
Jin's Dev Story
[SpringBoot] IoC &DI 본문
Object ⇒ 실체화가 가능한 것
Instance ⇒ 실체화 된 것
ex) 가구(추상적) ⇒ 의자, 침대 (Object) ⇒ 세상에 생겼을 때 Instance 가 되는 것
IoC 컨테이너
- 스프링 프레임워크도 객체를 생성하고 관리하고 책임지고 의존성을 관리해주는 컨테이너
→ IoC를 실제로 구현하는 것
Bean
→ 스프링 컨테이너가 관리하는 객체
빈 팩토리(BeanFactory)
→ 빈들을 관리한다는 의미의 컨테이너
→ 객체의 생성과 객체의 사이의 런타임 관계를 DI 관점에서 볼 때의 컨테이너
ApplicationContext
→ BeanFactory에 여러가지 컨테이너 기능을 추가한 것
→ BeanFactory를 확장한 것
→ 스프링의 각종 부가 기능을 추가로 제공
1) 제어의 역전(Inversion of Control, IoC)
- 프로그램의 제어 흐름 구조가 바뀌는 것
- 일반적인 프로그램 흐름 구조 : 사용하는 쪽(개발자)에서 메서드(라이브러리) 호출
- 역전된 프로그램 흐름 구조 : 기반이 되는 쪽(프레임워크)에서 사용하는 쪽의 메서드 호출
- 즉, 어떠한 일을 하도록 프레임워크에 제어의 권한을 넘김으로써 개발자가 신경써야 할 것을 줄이는 전략
- 프레임워크에 정의된 인터페이스, 추상타입을 개발자가 구현함으로써 객체를 프레임워크에 주입함(Dependency Injection, DI)
2) DI(Dependency Injection)
- 의존성 주입
- 클래스 사이의 의존 관계를 빈(Bean) 설정 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것
DI가 적용 안된 예 (개발자가 직업 인스턴스를 생성)
class 엔진 {
}
class 자동차 {
엔진 v5 = new 엔진();
}
Spring에서 DI가 적용 된 예 (컨테이너가 v5 변수에 인스턴스를 할당해줌)
@Component
class 엔진 {
}
@Component
class 자동차 {
@Autowired
엔진 v5;
}
'Web & Android > SpringBoot' 카테고리의 다른 글
[SpringBoot] AOP(Aspect Oriented Programming) (0) | 2023.08.12 |
---|---|
[SpringBoot] OOP(Object Oriented Programming) (0) | 2023.08.12 |
[SpringBoot] Spring Boot (0) | 2023.08.12 |
[SpringBoot] Spring (0) | 2023.08.12 |
[SpringBoot] 라이브러리와 프레임워크 (0) | 2023.08.12 |