Springmedium면접 빈도: medium

Spring vs Spring Boot

Spring vs Spring Boot

📝 Spring 특징

1. DI (Dependency Injection)

의존성 주입

객체 간 결합을 느슨하게

코드 재사용성 증가

단위 테스트 용이


2. IoC (Inversion of Control)

제어의 역전

객체 생성 및 생명 주기를 프레임워크가 제어

개발자는 인터페이스에만 의존

코드 재사용성과 유지보수성 향상


IoC 구현 방법

컨테이너에 객체 등록

컨테이너에서 객체 주입

컨테이너가 객체 생명주기 관리


3. AOP (Aspect Oriented Programming)

관점 지향 프로그래밍

횡단 관심사 처리

로깅, 보안, 트랜잭션 등 분리

프록시 객체 사용


🚀 Spring Boot 특징

1. Embedded Tomcat

내장 Tomcat 사용

별도 Tomcat 설치 불필요

JAR로 간편하게 배포


2. Starter를 통한 Dependency 자동화

Spring Framework 문제점:

  • 각 dependency 호환 버전 일일이 맞춤
  • 하나의 버전 변경 시 다른 dependency 영향
  • 버전 관리 어려움

Spring Boot 해결:

  • Starter가 대부분의 dependency 관리
  • 호환 버전 자동 설정

3. EnableAutoConfiguration

사전 정의한 라이브러리를 Bean에 자동 등록

설정 자동화


🆚 Spring vs Spring Boot

Spring

수동 설정 필요

Tomcat 별도 설치

Dependency 버전 관리 복잡

설정 파일 많음


Spring Boot

자동 설정

내장 Tomcat

Starter로 Dependency 자동화

최소한의 설정


💡 결론

Spring과 Spring Boot는 모두 Java 기반 웹 애플리케이션 프레임워크

Spring Boot는 Spring을 사용하기 쉽게 만드는 기능 제공

Spring Boot는 Spring의 복잡한 설정을 간소화


❓ 면접 질문 예시

Q1. Spring의 주요 특징은?

답변: Spring의 주요 특징은 세 가지입니다. 첫째, DI(의존성 주입)로 객체 간 결합을 느슨하게 하여 코드 재사용성을 높이고 단위 테스트를 용이하게 합니다. 둘째, IoC(제어의 역전)로 객체 생성 및 생명 주기를 프레임워크가 제어하여 개발자는 인터페이스에만 의존할 수 있습니다. 셋째, AOP(관점 지향 프로그래밍)로 로깅, 보안, 트랜잭션 등 횡단 관심사를 분리합니다.

Q2. IoC란 무엇인가요?

답변: IoC(Inversion of Control, 제어의 역전)는 의존성 주입의 한 형태로, 객체의 생성 및 생명 주기를 제어하는 책임을 개발자가 아닌 프레임워크에 위임하는 것입니다. 개발자는 객체의 구체적인 구현에 의존하지 않고 인터페이스에만 의존할 수 있어 코드의 재사용성과 유지보수성이 향상됩니다.

Q3. Spring Boot의 주요 특징은?

답변: Spring Boot의 주요 특징은 세 가지입니다. 첫째, 내장 Tomcat을 사용하여 별도 Tomcat 설치 없이 JAR로 간편하게 배포할 수 있습니다. 둘째, Starter를 통한 Dependency 자동화로 호환 버전을 자동으로 설정하여 버전 관리가 편리합니다. 셋째, EnableAutoConfiguration으로 사전 정의한 라이브러리를 Bean에 자동 등록하여 설정을 자동화합니다.

Q4. Spring과 Spring Boot의 차이는?

답변: Spring은 수동 설정이 필요하고 Tomcat을 별도로 설치해야 하며 Dependency 버전 관리가 복잡하고 설정 파일이 많습니다. Spring Boot는 자동 설정을 제공하고 내장 Tomcat을 사용하며 Starter로 Dependency를 자동화하고 최소한의 설정만 필요합니다. Spring Boot는 Spring을 사용하기 쉽게 만드는 기능을 제공합니다.

Q5. AOP란 무엇인가요?

답변: AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)는 횡단 관심사를 처리하는 데 사용됩니다. 횡단 관심사는 애플리케이션의 주요 기능과 관련이 없는 로깅, 보안, 트랜잭션 등을 의미합니다. AOP는 횡단 관심사를 애플리케이션 코드에서 분리하고 프록시 객체를 사용하여 추가합니다.


📚 원본 참고 자료

출처: 2023-CS-Study