본문 바로가기

Backend/Spring

[Spring] 최종 개념 정리

728x90

 

스프링은 ?

  • 스프링은 다음 기술로 다형성 + OCP, DIP를 가능하게 지원
    • DI(Dependency Injection): 의존관계, 의존성 주입
    • DI 컨테이너 제공
  • 클라이언트 코드의 변경 없이 기능 확장 
  • 쉽게 부품을 교체하듯이 개발

이런 것들을 제공한다

 

without 스프링?

스프링이 없이 순수 자바 코드로 OCP, DIP 원칙을 지키면서 개발하면, 

실제 프로그램 코드보다 OCP, DIP원칙을 위한 코드의 양이 훨씬 많아진다 

이래서 프레임워크가 탄생하게 된 것

 

즉, 혼자서 OCP , DIP원칙을 지키며 자바코드를 짜면, 결국 스스로 스프링 프레임워크( DI컨테이너)를 만들게 된다.

필요성은 뒤에서 코드를 짜면서 더 느낄 수 있다 

 

 

정리

  • 모든 설계에 역할과 구현을 분리하자. 
  • 변경할 수 있도록 만드는 것이 좋은 객체 지향 설계다.
  • 애플리케이션 설계도 공연을 설계 하듯이 배역만 만들어두고, 배우는 언제든지 유연하게 이상적으로는 모든 설계에 인터페이스를 부여하자

 

실무 고민

  • 하지만 인터페이스를 도입하면 추상화라는 비용이 발생한다.
    • 추상화되면, 개발 코드를 한번 더 열어봐야함 (cost)
  • 기능을 확장할 가능성이 없다면, 구체 클래스를 직접 사용하고, 향후 꼭 필요할 때 리팩터 링해서 인터페이스를 도입하는 것도 방법이다.

 

앞으로는 직접 코드를 짜보면서, 왜 필요한지 직접느끼는 시간 ㅎㅎ

 

728x90