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
'☕️ JAVA > 🍃 Spring' 카테고리의 다른 글
스프링 부트 살펴보기 / 의존성 관리 간소화, 배포 간소화, 자동 설정 (0) | 2023.06.04 |
---|---|
Maven Standard Directory Layout과 plain jar, executable jar (0) | 2022.12.28 |
./gradlew bootRun vs java -jar로 실행할 때의 차이점 (리소스 경로) (0) | 2022.03.19 |
Spring boot에서 H2 DB 3가지 모드 사용하기(embedded, In-Memory, Server) (0) | 2022.03.16 |
댓글