1장

스프링 프레임워크는 어떻게 등장했는가?

<aside> 💡 태초에 EJB가 있었나니..

</aside>

스프링 프레임워크는 다른 백엔드 프레임워크와 어떤 부분이 다른가?

<aside> 💡 스프링 프레임워크는 좋은 객체 지향 설계(OoP)가 가능하다.

</aside>

스프링은 자바 언어 기반의 프레임워크로, 자바가 객체 지향 언어라는 특징을 살려 좋은 객체 지향 애플리케이션을 개발할 수 있게 해준다.

  1. 의존성 주입 DI(Dependency Injection) : Spring 프레임워크에 의존성을 주입하면서 객체 간 결합을 느슨하게 하는 것이다.(클라이언트의 코드 변경 없이 기능 확장 가능)
    1. 스프링에서는 ‘ApplicationContext’가 필요한 객체들을 생성하고, 주입하는 역할을 해주는 구조
    2. ApplicationContext가 관리하는 객체들을 bean이라 하고, 의존관계를 처리하는 방식으로는 XML, Annotation등이 있다.
    3. 생성자를 사용한 방법 권장
  2. 제어 역행 IoC(Inversion of Control) : IoC는 컨트롤의 제어권이 개발자가 아니라 프레임워크에 있다는 걸 뜻한다. 객체의 생성, 의존관계 설정 등을(Servlet이나 Bean과 같은 코드를) 개발자가 아닌 프레임워크가 대신해준다.
  3. 관점지향 프로그래밍 AOP(Aspect Oriented Programming) : 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리한다. 핵심기능을 제외한 부수적인 기능은 Security나 logging등은 기존 비즈니스 로직을 건들지 않고 프레임워크를 통해 AOP를 사용하여 추가할 수 있다.

스프링과 스프링 부트의 차이점은 무엇인가?

<aside> 💡 Spring의 약점, 어려운 설정과 버전 관리, 그리고 배포(jar vs war)

</aside>

  1. Dependency
  2. Configuration
  3. 배포