개발자 공부 - 인프런 온라인 강의/스프링 핵심 원리 - 기본편

[섹션 1. 객체 지향 설계와 스프링] 객체 지향 설계와 스프링 (+ 스프링 프레임 워크 탄생 배경)/ 인프런 김영한 스프링 핵심 원리 기본편

easpop 2023. 2. 6. 23:49
728x90
반응형

이번 시간에는 객체 지향 설계를 스프링과 관련하여 다루는 시간을 가졌다.

 

다시 스프링으로 돌아와서 스프링에 왜 객체 지향 얘기가 나오는가?

스프링이 제공하는 기술들로는,

DI(Dependency Injection), 의존관계 혹은 의존성 주입라고 한다.

그리고 DI 컨테이너가 있는데, DI 컨테이너는 자바 객체들을 스프링 컨테이너에 넣어놓고,

이 안에서 의존관계를 서로 연결해주고 주입해주는 기능이다.

 

이런 기술들을 통해서, 클라이언트 코드를 변경 없이 기능을 확장할 수 있다.

그렇기 때문에, 마치 부품을 교체하듯이 개발을 가능하게 한다.

 

- 스프링 프레임 워크가 탄생하게 된 배경

스프링이 없던 시절로 돌아가서,

어느 한 개발자가 좋은 객체 지향 개발을 하기 위해서,

OCP, DIP 원칙을 지키면서 개발을 했는데, 개발을 해보니 너무 할 일이 많았다.

내가 개발하려는 코드보다 원칙을 지키기 위해 만드는 것들이 오히려 더 많은, 배보다 배꼽이 더 큰 현상이 발생했다;;

그래서 프레임 워크로 만들었다.

순수하게 자바로 OCP, DIP 원칙을 지키면서 개발을 하게 되면, 결국 스프링 프레임 워크를 만들게 된다.

(더 정확히는 DI 컨테이너)

 

반응형

- 인터페이스 도입의 단점

실무적인 관점에서 봤을 때,

인터페이스를 도입하게 되면 추상화라는 비용이 발생하게 된다.

 

인터페이스를 만들게 되면, 직접 코드를 확인하기 위해서는 구현체 클래스를 한번 더 확인해야 하는 번거로움이 생긴다.

그렇기 때문에, 기능을 확장할 가능성이 없다고 하면 구체 클래스를 바로 쓰는것이 나은 방법일 수 있다.

그리고 향후에 꼭 필요하면 리팩토링해서 인터페이스를 도입하는 방법도 있다.

반대로 말하자면, 확장 가능성이 있다고 하면 인터페이스를 도입하는것이 낫다!

 

이런 것들을 고민하고 잘 설계하는게 좋은 개발자라고 할 수 있다~~!

 

728x90
반응형