Spring vs Spring Boot

GilLog·2021년 7월 6일
2

Spring

목록 보기
10/22

🙆‍♂️ import 🙇‍♂️

Spring vs. Spring Boot: A Comparison of These Java Frameworks[DZone-JavaZone]

[Spring] Spring 과 Spring Boot[Nathan Kwon]


Spring

Spring은 Java 진영에서 가장 대중적인 동적 웹 개발 프레임워크이다.

Spring은 아래 세 가지
의존성 주입(DI, Dependency Injection),
제어의 역전(IOC, Inversion Of Control),
관점 지향 프로그래밍(AOP, Aspect-Oriented Programming)

특성을 이용결합도를 낮추는 방식으로 Application을 개발할 수 있다.

Spring Boot

Spring의 환경 설정은 복잡하다.

Transaction Manager, Hibernate Datasource, Entity Manager, Session Factory ...

위 같은 설정에 초기 프로젝트 구축시 많은 어려움이 있다.

Spring Boot는 최소한의 기능으로 Spring MVC를 사용하여 손 쉽게 사용하기 위해 등장했다.

Spring Boot makes it easy to create stand-alone,
production-grade Spring based Applications that you can "just run".
https://spring.io/projects/spring-boot

spring-boot-starter Dependency만 추가해주면 바로 API를 정의하고,

내장 Tomcat으로 Web Application Server를 실행할 수 있다.

또한 스프링 홈페이지의 Spring Initializr.를 사용하면 바로 실행 가능한 프로젝트를 생성해준다.

실행환경이나 의존성 관리 등의 인프라 관련 등은 신경쓸 필요 없이 바로 개발 할 수 있게 해주는 것이 Spring Boot의 가장 큰 장점이다.


Spring Boot는 손쉬운 환경 설정을 위해 아래와 같은 방법을 사용했다.

AutoConfiguration

Spring Boot는 공통적으로 필요한 DispatcherServlet같은 설정Annotation을 이용하여 자동으로 설정해준다.

Spring Boot의 main method@SpringBootApplication Annotation을 가지고 있다.

@SpringBootApplication
public class BootApplication {
	public static void main(String[] args) {
		SpringApplication.run(BootApplication.class, args);
	}
}

@SpringBootApplication = @ComponentScan + @configuraion + @EnableAutoConfiguration


해당 @SpringBootApplication 하위에 있는 Annotation 들을 모두 Scanning하여 자동으로 설정해준다.


또한 Class path에 있는 jar를 감지하여 자동으로 구성해준다.

Springjar파일이 Class path에 있는 경우 Spring BootDispatcher Servlet으로 자동 구성한다.

마찬가지 Hibernatejar파일이 Class path 내에 존재한다면 이를 DataSource로 자동설정해준다.

Spring Boot Starter

Spring Bootspring-boot-starter-web를 통해 개발에 필요한 종속Dependency를 관리한다.

지금까지 Web Application을 위해 개발자들사용하려는 jar, 사용할 jar 버전등을 명시하며 골머리를 앓아왔다.

각각의 jar들의 호환되는 버전들을 찾아가며 일일히 설정해야 했기 때문이다.

Spring MVC, Jackson Databind, Hibernate, Log4j, ...

Spring Boot와 함께라면 개발자는 그저 Application을 실행만 하면 된다.

  • Spring
<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-webmvc</artifactId>
   <version>4.2.2.RELEASE</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.5.3</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>5.0.2.Final</version>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
  • Spring Boot

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
profile
🚀 기록보단 길록을 20.10 ~ 22.02 ⭐ Move To : https://gil-log.github.io/

0개의 댓글