[Spring] 스프링 vs 스프링부트

mingsso·2023년 10월 17일
0

SpringBoot

목록 보기
3/11

"Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can just run"
스프링 부트를 이용하면 단독으로 실행 가능한 상용 수준의 스프링 기반 애플리케이션을 손쉽게 만들 수 있음 -스프링부트 공식 사이트

즉, 별도의 복잡한 설정을 하지 않아도 스프링부트를 사용하면 개발이 쉬워짐!

스프링 프레임워크와 비교했을 때 스프링 부트가 가진 특징은 아래와 같다

1️⃣ 의존성 관리

스프링 프레임워크에서는 개발에 필요한 각 모듈의 의존성을 직접 설정해야 했으며, 호환되는 버전을 명시해야 정상 동작했음

ex)

<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf-spring5</artifactId>
    <version>3.0.11.RELEASE</version>
</dependency>

이렇게 버전까지 달아줘야 했다


하지만 스프링 부트에서는 이 같은 불편함을 해소하기 위해 'spring-boot-starter'라는 의존성을 제공함
spring-boot-starter의 의존성은 여러 종류가 있고, 각 라이브러리의 기능과 관련해서 자주 사용되고 서로 호횐되는 버전의 모듈 조합이 기록되어 있음

ex)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

spring-boot-starter 를 추가했기 때문에 자동으로 의존성이 추가된다

<dependency>
    <groupId>org.modelmapper</groupId>
    <artifactId>modelmapper</artifactId>
    <version>2.1.0</version>
</dependency>

외부에서 가져오는 의존성은 버전을 명시해주는 것이 좋다



2️⃣ 자동 설정

스프링부트는 스프링 프레임워크의 기능을 사용하기 위한 자동 설정을 지원함
자동설정은 애플리케이션에 추가된 라이브러리를 실행하는데 필요한 환경설정을 알아서 찾아줌

ex)

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

스프링부트 애플리케이션이 실행되면 @SpringBootApplication에 포함된 @ComponentScan@Component이 붙은 클래스를 발견해 빈을 등록함
이후 @SpringBootApplication에 포함된 @EnableAutoConfiguration이 'spring-boot-autoconfigure' 패키지 안에 spring.factories 파일을 추가해 다양한 자동 설정이 일부 조건을 거쳐 적용됨

암튼 개발자의 수고를 덜어줌..



3️⃣ 내장 WAS

스프링부트의 각 애플리케이션에는 내장 WAS가 존재함
보통 톰캣 서버를 사용한다

톰캣(Tomcat)이란

아파치 재단에서 만든 오픈소스 WAS
톰캣은 자바 서블릿과 JSP가 실행할 수 있는 환경을 제공하여 동적인 페이지를 생성함
그리고 DB 연결 및 데이터 조작, 다른 응용 프로그램들과 상호작용이 가능함

WAS(Web Application Server)
웹 서버와 웹 컨테이너의 결합으로 이루어진 소프트웨어

  • 웹 서버를 포함하고 있기 때문에 웹 서버처럼 사용할 수도 있음
  • DB와 연결되어 트랜잭션 처리를 하거나 다른 시스템과의 연동 기능 또한 포함하고 있음
  • 웹 서버와 달리 요청에 대해 동적인 페이지를 만들어 유연하게 응답할 수 있음

즉, 웹 서버는 정적인 컨텐츠만 제공하기 때문에 클라이언트의 요구에 유연하게 대처할 수 없지만
동적인 페이지를 생성해 클라이언트의 요구에 유연하게 대처하기 위해 WAS를 사용하는 것!



4️⃣ 모니터링

개발이 끝나고 서비스를 운영하는 시기에는 해당 시스템이 사용하는 스레드, 메모리, 세션 등의 주요 요소들을 모니터링해야 함
스프링부트에는 '스프링부트 액추에이터'라는 자체 모니터링 도구가 있음






참고자료

도서 '스프링부트 핵심 가이드'
https://velog.io/@dsunni/Spring-Boot-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%EC%9B%90%EB%A6%AC-%EC%9D%98%EC%A1%B4%EC%84%B1-%EA%B4%80%EB%A6%AC-%EC%9E%90%EB%8F%99-%EC%84%A4%EC%A0%95
https://chanho0912.tistory.com/100
https://kchanguk.tistory.com/2
https://www.inflearn.com/blogs/3315 (면접 답변으로 참고!)

profile
🐥👩‍💻💰

0개의 댓글