DI3 12. Dependency Injection 방법 0. 개요 - 이전 포스팅에서 의존성 자동 주입 방법과 그 원리에 대해서 배웠다. - 이번 포스팅에서는 Spring에서 제공하는 다양한 DI 자동 주입 방법에 대해서 알아보자. 1. Constructor(생성자) Injection - Spring은 생성자 주입 방식의 사용을 권장한다. a) 구현 방법 - @Component가 붙은 클래스 내부에 생성자를 만든다. - 생성자에 @Autowired를 부착한다. @Component public class TestServiceImpl implements TestService { private final TestRepository testRepository; @Autowired public TestServiceImpl(TestRepository testReposi.. 2022. 2. 11. 11. Dependency Injection 기본개념 0. 개요 - 이전 포스팅에서 Bean 자동 등록과 Spring이 Bean을 탐색하는 방법에 대해 알아보았다. - Bean 자동 등록을 배웠으니, 이제 DI(의존성, 의존관계) 자동 주입에 대해서 알아보자. 1. DI에 대하여 - DI(Dependency Injection)는 객체지향 프로그래밍에서 통용되는 개념이다. - DI는 프로그램간의 결합도를 낮추기위해 사용되는 대표적인 방법으로, 여기에는 강한 결합과 느슨한 결합이 있다. a) 강한 결합 - 객체 내부에서 직접 다른 객체를 생성하여 강한 결합도를 형성하는 구조다. - 앞서 SOLID에서 언급하였지만, 이와 같은 방식은 객체지향 프로그래밍의 OCP를 위반하는 방식이다. - 그 이유는 Client가 직접 구현체를 명시하는 방식이기 때문이다. b) 느.. 2022. 2. 10. 4. Spring을 사용하는 이유 0. 개요 - 이전 포스팅에서 좋은 객체지향 프로그래밍을 위한 SOLID 원칙을 배웠다. - 이제 SOLID만 따른다면, Java를 사용해 온전한 객체지향 프로그래밍을 구현할 수 있을까? 1. Java는 SOLID 원칙을 지킬 수 없다. - Java만을 이용해서 SOLID 원칙을 구현하는 것에는 문제가 있다. - 무엇이 문제인지 알아보자. a) OCP와 DIP원칙의 위배 - Java만을 이용하여 객체지향 프로그래밍을 만들다 보면 OCP와 DIP원칙을 위반하게 된다. - 간단한 예제를 살펴보자. public class ServiceImpl implements Service { private final Repository repository = new MemoryRepository(); } - 위의 예시에서.. 2022. 1. 27. 이전 1 다음