본문 바로가기
Spring Framwork

Spring & Spring Boot

by orioncsy 2023. 3. 17.

Spring & Spring Boot

Spring

개념

  • 자바 애플리케이션을 빌드할 수 있는 오픈 소스 프레임워크
  • Struts, JSP, Hibernate 등의 다양한 프레임워크에 대한 지원

Spring Triangle

  • IoC
    • 객체를 생성, 생명주기에 제어권이 바뀜
    • POJO(Plain Old Java Object) - 자바 모델, 기능, 프레임워크를 따르지 않는 java Object를 지칭하며 대표적으로 자바 Bean을 의미
    • Pojo의 생성, 초기화, 서비스, 소멸에 대한 권한을 가짐
    • IoC는 객체의 생성을 책임지고 의존성을 관리함
    • DI라는 의존성 주입을 통해 클래스 간 의존 관계를 빈 설정을 기반으로 컨테이너가 자동 연결
  • AOP(Aspect Oriented Programming)
    • 주요 기능과 부가 기능을 분리하여 관점별로 개발하는 방식
    • 기존 코드의 메서드 전후에 필요한 로직 수행
    • @Transactional이 AOP를 기반으로 만들어졌다.
    • aspect(부가 기능들을 모듈화), target(부가 기능을 수행해줘야 하는 클래스나 메서드 대상), advice(순수하게 부가 기능만 구현된 구현체), joinPoint(advice를 실제 수행할 시점), PointCut(부가 기능 수행할 시점에 대한 스펙 정의서), advisor(PointCut과 advice를 지칭)
  • PSA(Portable Service Abstraction)
    • 다른 여러 모듈을 사용할 때 별도의 추상화 레이어 제공
    • Spring web mvc, spring Transaction, Spring Cache 등이 해당
    • 추상화 계층을 사용해서 어떤 기술을 내부에 숨기고 개발자에게 편의성을 제공
    • 기본적으로 톰캣을 사용하는데 dependency에서 webflux로 바꾸고 실행하면 netty 기반으로 돌아가는 것이 대표적인 예

Spring Boot

개념

  • 기존의 spring 프레임워크 위에 구축
  • 스프링 프레임 워크를 사용하기 위한 많은 설정 부분을 자동화하여 사용자가 편하게 스프링 프레임워크를 사용할 수 있다.

차이점

Dependency

  • Spring은 dependency를 추가할 때 설정 파일이 길고 버전도 하나하나 관리해야 한다.
  • Spring Boot에서는 build.gradle 파일에 dependency를 간단하게 추가하고 관리 가능

Configuration

  • Spring은 configuration을 설정할 때 모든 애노테이션과 빈을 등록해줘야 한다.
  • Spring Boot에서는 build.gradle에 간단하게 추가하여 등록 가능
  • Spring Boot는 AutoConfiguration 사용 가능
    • @SpringBootApplication이라는 애노테이션 사용 가능
    • @ComponentScan, @EnableAutoConfiguration을 통해 빈을 등록해 주고 외부 라이브러리, 내장 톰캣 등을 사용 가능

배포

  • Spring에서는 war 파일을 WAS에 담아서 배포
  • Spring boot는 내장 tomcat이 있기 때문에 jar 파일로 간편하게 배포가 가능

Reference

https://yamyam-spaghetti.tistory.com/56

https://velog.io/@edenko/스프링의-핵심-3대-요소-Spring-Triangle

'Spring Framwork' 카테고리의 다른 글

Bean Life Cycle  (0) 2023.03.27
Bean Scope  (0) 2023.03.19
Controller  (0) 2023.03.18
Filter & Interceptor  (0) 2023.03.16
의존성 주입  (0) 2023.03.11