본문 바로가기
☕️ JAVA/🍃 Spring

Spring VS Spring Boot 몇 가지 차이점

by kukim 2022. 9. 23.

Spring Boot로 스프링을 처음 학습하며 Boot의 편리한 기능에 물들어 기존 Spring은 어떻게 구성되고 사용되는지 잘 몰랐습니다. Spring과 Spring Boot의 차이점을 간단히 살펴보려 합니다. (반성을 하며.. 🥹)

자세한 내용은 하단 레퍼런스를 참고해주세요.

 

+a) Spring Boot Starter

Spring Boot Starter란 Spring에서 사용하는 라이브러리 간의 의존성과 버전 조합을 확인하여 공개한 의존성 그룹(?)이라고 볼 수 있습니다. Spring Boot는 이를 활용하여 의존성 문제를 해결하고 있습니다.

차이점

설정 파일 관리

Spring 프레임워크의 경우 Dependency를 설정해줄 설정 파일과 버전을 직접 작성해야 합니다.

# Spring 프레임워크 Maven Dependencies 관리 

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>5.3.5</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.5</version>
</dependency>

 

Spring Boot의 경우 하나의 종속성(spring boot starter) 작성하면 간단히 사용할 수 있습니다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.4.4</version>
</dependency>

MVC 구성 중 JSP 웹 애플리케이션 생성

Spring은 디스패처 서블릿, 구성을 직접 정의해야 합니다.

예를 들어 web.xml 파일이나 WebApplicationInitializer을 구현하고, 리졸버를 직접 정의해야 합니다.

// Spring 프레임워크의 경우

public class MyWebAppInitializer implements WebApplicationInitializer {
 
    @Override
    public void onStartup(ServletContext container) {
        AnnotationConfigWebApplicationContext context
          = new AnnotationConfigWebApplicationContext();
        context.setConfigLocation("com.baeldung");
 
        container.addListener(new ContextLoaderListener(context));
 
        ServletRegistration.Dynamic dispatcher = container
          .addServlet("dispatcher", new DispatcherServlet(context));
         
        dispatcher.setLoadOnStartup(1);
        dispatcher.addMapping("/");
    }
}

@EnableWebMvc
@Configuration
public class ClientWebConfig implements WebMvcConfigurer { 
   @Bean
   public ViewResolver viewResolver() {
      InternalResourceViewResolver bean
        = new InternalResourceViewResolver();
      bean.setViewClass(JstlView.class);
      bean.setPrefix("/WEB-INF/view/");
      bean.setSuffix(".jsp");
      return bean;
   }
}

 

Spring Boot의 경우 Auto-configuration이라는 프로세스를 통해 손쉽게 아래와 같이 설정할 수 있습니다.

// Spring Boot의 경우

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

그 외 설정 차이

- 템플린 엔진 구성

- spring security

- 배포 (Spring과 다르게 Spring Boot는 Tomcat, Jetty 내장 WAS를 자체적으로 가지고 있어 jar로 배포 가능)


Reference

- 스프링 부트 공식 문서 설명

  https://spring.io/projects/spring-boot

- A Comparison Between Spring and Spring Boot by baeldung

  https://www.baeldung.com/spring-vs-spring-boot

- Spring Boot - Auto-configuration

  https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.auto-configuration

댓글