프레임워크
구조적으로 고정된 부분을 재사용할 수 있도록 하고, 응용별 특정 기능을 추가적인 사용자 작성 코드에 의해 선택적으로 구현 가능하도록 하는 포괄적인 추상 구조
프레임워크를 사용하는 이유
- 정형화된 부분을 간단하게 구현 가능
- 필요한 부분만 집중해서 개발
≫ 스프링 프레임워크 : 애플리케이션 개발에 필요한 기반을 제공해서 개발자가 비즈니스 로직 구현에만 집중할 수 있게끔 하는 것
스프링 프레임워크의 특징
- POJO (Plain Old Java Object)
- 순수 Java 만을 통해서 생성한 객체
- Java 및 Java 스펙에 정의된 기술만을 사용
- POJO가 아닌 상황 (외부 라이브러리를 import하여 상속 받아 객체 생성 : 외부 모듈에 의존하는 상태)에서는 상속 받은 객체의 변경이 발생하면 해당 기술을 사용하고 있는 모든 객체 코드의 변경이 필요
- 제어 역전 (IoC, Inversion of Control)
- 객체의 생명주기 관리를 외부(Spring 컨테이너, IoC 컨테이너)에 위임
- 의존성 주입(DI)과 관점 지향 프로그래밍(AOP)이 가능해짐
- 의존성 주입 (DI, Dependency Injection)
- 사용할 객체를 직접 생성하지 않고 외부 컨테이너가 생성한 객체를 주입 받아 사용
- 의존성 주입 방법 3가지
- 생성자를 통한 의존성 주입 (권장)
- 필드 객체 선언을 통한 의존성 주입
- @Autowired 어노테이션을 필드에 붙이기
- 외부에서 변경하기 힘들고, 프레임워크에 의존적임
- setter 메서드를 통한 의존성 주입
- setter 메서드를 public으로 열어두어야 하기 때문에 언제 어디서든 변경 가능한 단점
- 관점 지향 프로그래밍 (AOP, Aspect-Oriented Programming)
- 로깅, 트랜잭션 등 반복적으로 사용되는 부가 기능을 관점(Aspect) 기준으로 묶어 공통 로직으로 처리하도록 모듈화
- OOP를 더 잘 사용하도록 돕는 개념
- OOP와 AOP의 조화가 중요
Spring Boot
기존 스프링 프레임워크의 복잡한 문제점을 보완하여 편리하게 사용할 수 있도록 지원하는 "스프링 프레임워크"
세 가지 측면 - 의존성, 배포, 설정
의존성 관리 (springboot-dependecy-management)
- 수많은 라이브러리를 혼자 직접 설치하는 것이 아니라 단 몇 줄로 수많은 라이브러리와 버전 호환을 지원
- 개발자는 개발만 할 수 있게 해줌
자동 설정 (springboot-auto configuration)
- 애플리케이션 정보 감시 후 필요한 부분 구성
- 어노테이션(@RestController, @Service, @Repository , @Bean,..)을 사용
- 특정 사용 패턴이 반복되어 코드를 간소화할 수 있음
- 매번 애플리케이션 실행은 반복 패턴이니까 → 자동으로 설정해서 신경쓰지 않게 만듦
- 자동화 / 편리함 / 효율적
- @EnableAutoConfiguration or @SpringBootApplication : 설정 활성화
배포 간소화 (springboot-simplified-deployment)
'spring' 카테고리의 다른 글
타임리프(Thymeleaf) (0) | 2024.09.13 |
---|---|
템플릿 엔진(Template Engine) (0) | 2024.09.13 |
Spring Bean / 생명주기 (0) | 2024.06.14 |
MVC 패턴 (0) | 2024.04.20 |
HTTP / REST API (0) | 2024.04.19 |