자바에서 의존성 주입(Dependency Injection, DI)이란 객체 지향 프로그래밍에서 객체간의 결합도를 줄이고 유연성을 높이기 위한 설계 패턴 중 하나임
객체 지향 프로그램에서 사건(동작)은 객체간의 상호작용을 통해서 수행되는데
이 때 객체는 자신이 필요로 하는 다른 객체를 직접 생성하거나 참조함.
직접 객체를 생성하고 참조하게 되면 객체간 결합도가 높아짐. (코드를 수정하려면 코드 전체에 걸쳐 수정이 필요해짐)
의존성 주입은 이러한 문제를 해결하기 위해 객체가 필요로 하는 의존 객체를 외부에서 주입해주는 방식임
객체 스스로 필요로 하는 객체를 생성하는것이 아니라 외부에서 의존객체를 주입받아서 사용함
(별도의 인터페이스나 추상클래스를 생성해서 생성자 매개변수로 할당할 수 있음)
의존성 주입을 통해 객체간 결합도를 낮추고 코드의 수정(변화와 확장)이 용이해짐
의존성 주입을 위해 다양한 프레임워크와 라이브러리가 제공되는데,
스프링 프레임워크에서는 XML, 어노테이션 등 다양한 방법을 제공한다. -> 추후 학습 예정
이틀에 걸쳐서 주문 프로그램을 만드는 실습을 진행했다.
아무래도 지난 2주간 배웠던 내용이 거의 대부분 활용되는 프로젝트여서 중간중간 복잡한 부분이 많았다.
특히 클래스나 변수명 작성과 활용이 어려웠다. (대소문자에 따라서 달라지다보니 코드를 꼼꼼하게 봐야했다)
어떤 클래스에서 어떤 메소드를 가지고 있는지, 또한 상호관에 어떤 포함관계를 갖는지 등이 한번에 파악하기 어려웠다.
주말동안 여러번 반복해보고 캡슐화, 상속, 추상화, 다형성에 대해서는 확실하게 이해할 수 있도록 해야겠다.
'부트캠프 개발일기 > Java' 카테고리의 다른 글
16일차: 컬렉션(Collection Framework) (0) | 2023.03.07 |
---|---|
15일차: 컬렉션(Enum, Generic, Exception Handling) (0) | 2023.03.06 |
13일차: 미니 프로젝트(얕은복사 vs 깊은복사) (0) | 2023.03.02 |
12일차: 객체지향 프로그래밍 심화(다형성/Polymorphism, 추상화/Abstraction) (0) | 2023.02.28 |
11일차: 객체지향 프로그래밍 심화(상속/Inheritance, 캡슐화/Encapsulation) (0) | 2023.02.27 |