profile image

L o a d i n g . . .

의존관계 주입이란? (DI, Dependency Injection)

강한 결합

  • 객체 내부에서 다른 객체를 생성하는 것은 강한 결합도 를 가지는 구조
  • A 클래스 내부에서 B 라는 객체를 직접 생성하고 있다면, B 객체를 C 객체로 바꾸고 싶은 경우에 A 클래스도 수정해야 하므로 강한 결합임

  • 느슨한 결합

  • 객체를 주입 받는다는 것은 외부에서 생성된 객체를 인터페이스를 통하여 넘겨받는 것
  • 이렇게 하면 결합도를 낮출 수 있고, 런타임에 의존관계가 결정 되기 때문에 유연한 구조를 가짐
  • 생성자 주입을 사용하게 되면 전략 패턴을 사용하게 됨

  • 생성자 주입이란?

    - 주입: A 객체가 B 객체를 사용하는 코드가 있을 때, B 객체를 생성하여 A 객체가 사용할 수 있도록 관계를 형성해주는 것

    - 생성자 주입: 생성자를 사용하여 객체 생성 시, 생성되는 객체가 사용하는 의존성을 생성자의 파라미터로 전달해주는 방식

    @Controller
    public class HomeController {
    
        private final GameService gameService;
    
        // Spring 4.3 이전 버전이라면 @Autowired 필요
        public HomeController(GameService gameService) {
            this.gameService = gameService;
        }
    }

    - final 키워드 선언 가능

    - 테스트 코드 작성 용이


    https://emgc.tistory.com/140

    https://www.youtube.com/watch?v=9_5_bAVHd8c&t=1s 

    https://www.youtube.com/watch?v=1vdeIL2iCcM 

    https://www.youtube.com/watch?v=fGOU7JqNHyE&t=442s 


     

    참고

    1. https://velog.io/@chy0428/OS-%EB%A9%80%ED%8B%B0%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EB%A9%80%ED%8B%B0%ED%94%84%EB%A1%9C%EC%84%B8%EC%8B%B1

    2. https://choirim.tistory.com/65

     

    'Information Technology > Spring' 카테고리의 다른 글

    [Spring] 점프 투 스프링부트 - 2  (0) 2023.07.28
    [Spring] 점프 투 스프링부트 - 1  (2) 2023.07.26
    [Spring] MVC 패턴이란?  (1) 2023.05.13
    복사했습니다!