1. 스프링 프레임워크란?
자바 애플리케이션 개발을 위한 프레임워크입니다.
과거 복잡했던 EJB 기술을 대체하여 POJO 중심의 단순하고 튼튼한 코드로 복잡한 엔터프라이즈 시스템을 개발할 수 있도록 등장했습니다.
2. 스프링의 핵심 3대 요소
스프링의 핵심 아키텍처 특징입니다.
- IOC (제어의 역전)
- DI (의존성 주입)
- AOP (관점 지향 프로그래밍)
- PSA (일관된 서비스 추상화)
- IOC : 객체의 생성, 생명주기 관리, 소멸의 제어권이 개발자가 아닌 스프링 컨테이너에 있습니다.
- DI : 객체가 필요한 의존 객체를 직접
new로 생성하지 않고, 컨테이너에서 주입받아 객체 간 결합도를 낮추고 유연성을 극대화합니다. - AOP : 비즈니스 핵심 로직과 공통 로직을 분리합니다.
- PSA : DB 접근 방식이나 트랜잭션 관리 방식이 바뀌더라도 상위 레이어의 코드는 수정할 필요가 없도록 표준화된 추상화 인터페이스를 제공합니다.
3. 핵심 어노테이션
스프링 컨테이너가 관리하는 객체(Bean)를 등록하고 주입할 때 사용하는 대표적인 어노테이션입니다.
| 어노테이션 | 설명 |
@Component
|
스프링 컨테이너에 Bean으로 등록할 객체임을 나타내는 기본 어노테이션 |
@Controller / @RestController
|
Web MVC의 컨트롤러 레이어로 등록 (REST API 응답 시 @RestController)
|
@Service
|
비즈니스 로직을 처리하는 서비스 레이어로 등록 |
@Repository
|
DB에 접근하는 레이어로 등록 및 DB 예외 변환 처리 |
@Autowired
|
스프링 컨테이너가 관리하는 Bean을 알맞은 타입의 변수에 자동 주입 |
@Bean
|
개발자가 직접 제어할 수 없는 외부 라이브러리 객체를 Bean으로 등록할 때 사용 |
4. Spring과 Spring Boot 차이
| 구분 | Spring Framework | Spring Boot |
| 설정 (Configuration) | XML 또는 JavaConfig로 복잡한 의존성 및 Bean 설정 필요 | 자동 설정을 통해 설정 최소화 |
| 의존성 관리 | 개별 라이브러리의버전 호환성을 직접 맞춤 |
starter 의존성을 통해 검증된 라이브러리 조합 자동 제공
|
| 서버 실행 | Tomcat 등 별도 WAS를 설치하고 war 빌드 파일 배포 | 내장 서버 포함으로 jar 단일 실행 가능 |
