본문 바로가기

Java Spring/Spring과 객체지향4

[스프링과 객체지향 3편] DI, IoC, 스프링 컨테이너 이전 편에서 객체지향설계 5원칙에 대해 다루었다. 다형성만을 사용해서 OCP와 DIP를 지키기 어렵다는 것도 설명하였다. 이번 편에서는 OCP와 DIP를 지키기 위해 DI, IoC에 대해 알아보고, 나아가 DI 컨테이너, 스프링 컨테이너에 대해 알아볼 것이다. DI (Dependency Injection), 의존관계 주입 애플리케이션 실행 시점에 외부에서 실제 구현 객체를 생성하고 전달하여 클라이언트와 서버의 실제 의존관계가 연결되는 것을 의존관계 주입(DI)이라고 한다. 의존관계는 두 가지로 분리해서 생각해야 한다. - 정적인 클래스 의존관계 - 동적인 객체 의존관계 정적 의존관계는 애플리케이션을 실행하지 않아도 코드를 통해 알 수 있는 의존관계이다. (import 패키지로만 알 수 있는 부분) 정적 .. 2022. 7. 4.
[스프링과 객체지향 2편] 객체지향 설계의 5가지 원칙(SOLID) 좋은 객체지향 설계를 위해 따르는 5원칙을 SOLID라고 한다. SRP, OCP, LSP, ISP, DIP의 앞 글자를 따서 얻어진 이름이다. 이 다섯 가지의 원칙을 지키면, 확장과 변경에 유연하고 유지보수가 쉬운 소프트웨어를 개발할 수 있다. SOLID와 Spring이 무슨 상관이냐고 물을 수 있다. 결론부터 말하면, SOLID를 지켜서 코드를 작성하면 유지보수가 쉬운 것은 사실이지만, 작성해야 할 코드량이 굉장히 많아져서 때로는 배보다 배꼽이 큰 상황이 생길 수 있다. Spring Framework는 이런 상황을 해결해주기 위한 다양한 기능을 제공해준다. 하나의 예시로, 스프링 프레임워크의 의존관계 자동 주입 기능은 OCP와 DIP를 지키기 위해 사용하는 Config Class의 코드량을 엄청나게 줄.. 2022. 7. 3.
[스프링과 객체지향 1편] 객체지향과 다형성 스프링은 객체지향의 특성을 살려 웹 애플리케이션을 개발할 수 있도록 도와주는 프레임워크이다. 그렇기 때문에 우리가 스프링을 사용하는 이유를 알기 위해서, 스프링을 더 잘 사용하기 위해서 먼저 객체지향에 대한 이해가 필요하다. 객체지향 프로그래밍 (OOP) : 프로그램을 단순히 코드를 위에서 아래로 순차적인 실행으로 개발하는 것이 아니라, '역할'과 '책임'이 부여된 객체들의 '협력' 관점에서 프로그램을 설계하고 개발하는 것을 말한다. 객체지향의 특징 네 가지 본 내용은 추후에 책 내용을 정리할 때 더 자세히 쓸 예정이다. 이 글에서는 다형성이 가장 중요하다는 것만 알고 넘어가자. - 추상화 - 캡슐화 - 상속 - 다형성 왜 객체지향적으로 프로그램을 설계하고 개발해야 하는가? : 프로그램을 객체지향적으로 .. 2022. 6. 25.
[스프링과 객체지향 0편] Spring을 공부하는 이유 요즘 취업 준비를 하다보니 면접을 자주 보고 있는데, 다음과 같은 질문을 받은 적이 있다. "왜 하필 Spring을 공부하고 있는가?" "Spring 프레임워크가 무엇인가?" "Spring boot는 무엇인가?" "객체지향적 설계가 무엇인가?" "객체지향 5원칙을 지키면서 개발한 적이 있는가?" 내가 Spring을 공부하기 시작한 이유는 단순히 백엔드 개발자가 되고 싶고, 우리나라에서 가장 많이 쓰이는 백엔드 프레임워크가 Spring Framework이기 때문이었다. 그래서 막상 이런 질문이 들어오면, 당황과 함께 '많이 쓰이기도 하고, Spring이 객체지향 언어인 Java로 웹 개발을 하는 데 있어서 도움을 주는 것 같다' 라고 대충 얼버무리며 답변해왔다. 스스로도 답변의 양과 질이 매우 부족하다고.. 2022. 6. 25.