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

2023. 4. 11. 10:36·Java/Spring Boot
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 > Spring Boot' 카테고리의 다른 글

[Spring Boot] AOP (관점 지향 프로그래밍) ★  (0) 2023.04.11
[Spring Boot] ResponseEntity  (0) 2023.04.11
[Spring Boot] REST API - Controller 구현 예시  (0) 2023.04.10
[Spring Boot] MVC 패턴  (0) 2023.04.10
[Spring Boot] 파라미터 전달 방식  (0) 2023.04.09
'Java/Spring Boot' 카테고리의 다른 글
  • [Spring Boot] AOP (관점 지향 프로그래밍) ★
  • [Spring Boot] ResponseEntity
  • [Spring Boot] REST API - Controller 구현 예시
  • [Spring Boot] MVC 패턴
스응
스응
    반응형
    250x250
  • 스응
    이서영의 개발 블로그
    스응
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (383)
      • Java (134)
        • Base (54)
        • Spring Boot (37)
        • JSP (16)
        • Swing (GUI) (20)
        • Design Pattern (7)
      • C# (13)
      • PHP (18)
      • SQL (27)
      • Vue.js (10)
      • Tailwind CSS (4)
      • TypeScript (7)
      • HTML & CSS (27)
      • JavaScript (26)
      • jQuery (10)
      • Android (3)
      • - - - - - - - - - - - - - - (0)
      • Hotkeys (5)
      • CS (30)
      • etc. (13)
      • Error Note (14)
      • Team Project (24)
        • Airlines Web Project (12)
        • University Web Project (6)
        • Strikers 1945 GUI Project (6)
      • My Project (18)
        • Library Web Project (8)
        • Pet Shopping Mall GUI Project (10)
  • 블로그 메뉴

    • Home
    • Write
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    CSS
    typeScript
    SEO
    jsp
    티스토리챌린지
    git
    http
    Android
    SQL
    cs
    tailwindcss
    Hotkeys
    Codeigniter
    SpringBoot
    개발일지
    면접
    zapier
    php
    오블완
    Wordpress
    HTML
    vuejs
    java
    Swing
    js
    errorNote
    C#
    jQuery
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
스응
[Spring Boot] IoC (제어의 역전) / DI (의존성 주입) ★
상단으로

티스토리툴바