본문 바로가기
Java Web/Spring Boot

[Spring Boot] IoC (제어의 역전) / DI (의존성 주입) ★

by 스응 2023. 4. 11.
728x90
728x90

IoC (Inversion Of Control, 제어의 역전)

  - 객체(인스턴스)의 생명주기 관리를 개발자가 아닌 Spring Container (IoC Container)가 모두 맡아서 함

      → 제어의 역전 (프로그램의 제어 흐름이 뒤바뀜)

           : 실행의 제어권이 개발자에서 Spring Boot 프레임워크로 넘어감

      → 제어 흐름의 일부/전부를 프레임워크가 제어함

      → 프로그램의 유연성 & 재사용성 향상

  - 소프트웨어 디자인 패턴

  - Spring Container에 올라간 Bean 객체들은 모두 싱글톤 패턴으로 관리됨

 

  - Spring의 목표

    : 내부적으로 Servlet Container를 가지고 있지만, 개발자가 그에 대해 신경쓰지 않고

      Spring Container에 대해서만 관리하도록 함

 

#  Bean 객체

  - Spring Container가 관리하는 객체   

  - Bean 객체로 지정하는 어노테이션

      · @RestController : RESTful API를 처리하는 Controller 객체

      · @Controller : View를 처리하는 Controller 객체

      · @Component : 1개의 클래스를 지정

      · @Configration : 2개 이상의 클래스를 지정

      · @Bean : 1개의 외부 라이브러리로부터 생성한 객체를 지정

 

 

반응형
728x90

DI (Dependency Injection, 의존성 주입)

  - 클래스가 자신이 사용할 객체를 직접 생성하지 않고, 외부에서 이를 주입받아 사용하는 것

  - 스프링이 관리하는 객체를 원하는 곳에서 자유롭게 가져와서 사용함

  - 필요할 때 Spring Container에서 가져와서 사용함

      : IoC로 만들어져 있는 것을 가져와서 사용함

        → IoC 대상으로 등록되어 있지 않다면 DI를 사용할 수 없음

  - IoC의 한 형태 (IoC를 구현하는 방법 중 하나)

  - 클래스 간의 의존성을 줄임

      · 의존성으로부터 격리시켜, 코드 테스트가 용이함

      · 루즈 커플링 가능

      · 코드를 확장/변경할 때 그에 대한 영향을 최소화함 (추상화)

  - 클래스의 재사용성 & 유연성 향상 

  - DI를 자동으로 설정하는 어노테이션 : @Autowired

      → 대상이 IoC의 대상으로 등록되어 있는지 확인 !

  - 전략 패턴을 이용한 DI 구현 예시 : https://young0105.tistory.com/190

 

 

 

 

320x100
반응형

'Java Web > Spring Boot' 카테고리의 다른 글

[Spring Boot] AOP (관점 지향 프로그래밍) ★  (0) 2023.04.11
[Spring Boot] ResponseEntity  (0) 2023.04.11
[Spring Boot] MVC 패턴  (0) 2023.04.10
[Spring Boot] 파라미터 전달 방식  (0) 2023.04.09
[Spring Boot] 개요  (0) 2023.04.07

댓글