반응형
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
반응형