본문 바로가기

spring

스프링 프레임워크 / Spring Boot

 

프레임워크

구조적으로 고정된 부분을 재사용할 수 있도록 하고, 응용별 특정 기능을 추가적인 사용자 작성 코드에 의해 선택적으로 구현 가능하도록 하는 포괄적인 추상 구조

 

 

프레임워크를 사용하는 이유
  • 정형화된 부분을 간단하게 구현 가능
  • 필요한 부분만 집중해서 개발

≫ 스프링 프레임워크 : 애플리케이션 개발에 필요한 기반을 제공해서 개발자가 비즈니스 로직 구현에만 집중할 수 있게끔 하는 것

 

스프링 프레임워크의 특징
  • 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