💐 Spring/Spring 핵심 기술

IoC (Inversion of Control) , DI (Dependency Injection)

2020. 6. 2. 00:18
반응형

IoC 란?  Inversion of Control ( 제어권 역전 )

 

 

(IoC 예시)

객체를 내가 직접 new 생성 (IoC 적용 x)

class OwnerController{
	private OwnerRepository repository = new OwnerRepository();
}

 

IoC 를 이용한 의존성 주입 (IoC 적용 o)

class OwnerController{
	private OwnerRepository repo;
    
    public OwnerController(OwnerRepository repo){ //생성자를 통해 매개변수로 객체를 받는다
    	this.repo = repo;
    }
}

OwnerRepository는 OwnerController의 의존성이다. ->OwnerRepository가 있어야 OwnerController를 제대로 쓸수있다.

OwnerController에겐 OwnerRepository를 꼭 필요로 한다.

근데 이 의존성을 누가 관리를 하냐, IoC가 관리를 한다.

 

IoC OwnerRepository라는 의존성을 OwnerController 에게 주입시킨다. -> 이것이 IoC 이다.

class OwnerControllerTest{
	@Test
   	public void create(){
    	OwnerRepository repo = new OnwerRepository(); //OwnerRepository객체를 생성해서
        OwnerController controller = new OnwerController(repo);//OwnerController객체에 의존성 주입
    }
}

DI (Dependency Injection) 의존성 주입 예

 

 

 

의존성 주입 (Dependency Injection)

 

의존성 주입 시켜주는법

 

1. 메소드 parameter로 의존성을 받아서 주입시켜주는 방법.

@Configuration
public class ApplicationConfig{
	@Bean
    public BookRepository bookRepository() {
    	return new BookRepository();
    }
}

---------------------------------------------------

@Bean
public BookService bookService (BookRepository bookRepository){
	BookService bookService = new BookService();
    BookService.setBookRepository(bookRepository)
}

 

2. 의존성을 반환하는 메소드를 호출해서 주입시키는 방법.

@Configuration
public class ApplicationConfig{
	@Bean
    public BookRepository bookRepository() {
    	return new BookRepository();
    }
}

---------------------------------------------------

@Bean
public BookService bookService (){
	BookService bookService = new BookService();
    BookService.setBookRepository(bookRepository() );
}

 

 

 

참조 :

https://shlee0882.tistory.com/201

https://galid1.tistory.com/494

 

반응형
저작자표시 (새창열림)
'💐 Spring/Spring 핵심 기술' 카테고리의 다른 글
  • 빈을 등록하고 의존성 주입하는 방법
  • PSA( Portable Service Abstract )
  • AOP (Aspect-Oriented Programming)
  • 빈 (Bean) , IoC (Inversion of Control) 컨테이너, @Autowired
iseunghan
iseunghan
꾸준하게 열심히..
iseunghan
iseunghan

공지사항

  • 어제보다 나은 오늘이 되기 위해 🔥
  • 분류 전체보기 (261)
    • 💐 Spring (14)
      • 개념 및 이해 (2)
      • Spring 핵심 기술 (24)
      • Spring REST API (8)
      • Spring MVC, DB 접근 기술 (7)
      • Spring Security (23)
      • Spring in Action (1)
    • 🌻 JAVA (84)
      • 자바 ORM 표준 JPA 프로그래밍 (20)
      • 알고리즘, 자료구조 (13)
      • 디자인 패턴 (7)
      • 정리정리정리 (43)
      • JUnit (1)
    • 🔖 Snippets (3)
      • Javascript (3)
    • ⚙️ Devops (22)
      • ⛏ Git (11)
      • 🐳 Docker (6)
      • 🐧 Linux (3)
      • 🌈 Jenkins (1)
      • 📬 Kafka (1)
    • 💬 ETC.. (4)
      • 💻 macOS (2)
    • 🌧️ ORM (2)
      • JPA (2)
    • 🐍 Python (2)
    • 📚 Databases (15)
      • 오라클로 배우는 데이터베이스 개론과 실습(2판) (3)
      • RealMySQL 8.0 (8)
    • 🔥 Computer Science (5)
      • 📡 네트워크 (5)
    • 🏷️ 협업 (1)
    • 📜 코딩테스트 (38)
      • BAEKJOON\수학 1, 수학 2 (8)
      • BAEKJOON\재귀 (5)
      • BAEKJOON\브루트 포스 (3)
      • BAEKJOON\정렬 (1)
      • BAEKJOON\백트래킹 (5)
      • BAEKJOON\BFS, DFS (6)
      • BAEKJOON\이분탐색 (1)
      • BAEKJOON\다이나믹 프로그래밍 (9)
      • BAEKJOON\그리디 알고리즘 (0)
    • ✨ ISEUNGHAN (1)

인기 글

최근 글

전체
오늘
어제
반응형
hELLO · Designed By 정상우.
iseunghan
IoC (Inversion of Control) , DI (Dependency Injection)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.