2021.12.24 - [개발자가 될 때까지/Spring boot] - [Spring] 스프링과 스프링부트 , 빈(Bean)
위 게시글을 작성하고 나서 시간 조금 지나고 나니 당시에는 그렇구나 하고 넘어갔던 부분에 대한 개념정리가 많이 부족해 그래서 이걸 왜 하더라? 라는 물음이 생겨 다시 정리해보기로 했다.
https://steady-hello.tistory.com/120
물음 1) 그래서 의존성 주입에서 의존이 뭔데?
사전적 의미의 의존은 다른 무언가한테 의지한다 라고 알고 있는데 여기서 코드끼리 의존한다고 하니 제대로 이해가 되지 않았다.
위의 글의 설명을 토대로 정리하자면
Service에서 어떤 로직을 수행하려면 (insert나 select나 등등) Model 객체 사용하는게 되는데, 다시 말하면 Service는 Model을 반드시 필요로 한다는 뜻이다.
나 너가 필요해!! 너한테 의지해서 이거 할래!!
이렇게 설명할 수 있지 않을까 싶다.
물음 2) 의존성 주입을 왜 해야하는데?
https://yaboong.github.io/spring/2019/08/29/why-field-injection-is-bad/
의존성 주입(DI)에 대한 이해가 부족한 상태에서 생기는 물음이었다. DI는 스프링뿐만 아니라 객체지향프로그래밍에서 통용되는 개념이라고 한다.
강한 결합
객체 내부에서 다른 객체를 생성하는 것은 강한 결합도를 가지는 구조이다. A 클래스 내부에서 B 라는 객체를 직접 생성하고 있다면, B 객체를 C 객체로 바꾸고 싶은 경우에 A 클래스도 수정해야 하는 방식이기 때문에 강한 결합이다.
느슨한 결합
객체를 주입 받는다는 것(의존성 주입)은 외부에서 생성된 객체를 인터페이스를 통해서 넘겨받는 것이다. 이렇게 하면 결합도를 낮출 수 있고, 런타임시에 의존관계가 결정되기 때문에 유연한 구조를 가진다.
의존성 주입 추가 참고
https://linkeverything.github.io/springboot/dependency-injection/
'Study > Spring boot' 카테고리의 다른 글
[Spring boot] file upload 한글 깨짐 (0) | 2022.03.23 |
---|---|
[Spring boot] Snake_case to camelCase (0) | 2022.03.22 |
[Spring boot] @RequestParam과 @PathVariable (0) | 2022.01.28 |
[Spring boot] Lombok(롬복) (0) | 2022.01.26 |
[Spring] Spring mvc life cycle (0) | 2022.01.02 |