"Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can just run"
스프링 부트를 이용하면 단독으로 실행 가능한 상용 수준의 스프링 기반 애플리케이션을 손쉽게 만들 수 있음 -스프링부트 공식 사이트
즉, 별도의 복잡한 설정을 하지 않아도 스프링부트를 사용하면 개발이 쉬워짐!
스프링 프레임워크와 비교했을 때 스프링 부트가 가진 특징은 아래와 같다
스프링 프레임워크에서는 개발에 필요한 각 모듈의 의존성을 직접 설정해야 했으며, 호환되는 버전을 명시해야 정상 동작했음
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>
외부에서 가져오는 의존성은 버전을 명시해주는 것이 좋다
스프링부트는 스프링 프레임워크의 기능을 사용하기 위한 자동 설정을 지원함
자동설정은 애플리케이션에 추가된 라이브러리를 실행하는데 필요한 환경설정을 알아서 찾아줌
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 파일을 추가해 다양한 자동 설정이 일부 조건을 거쳐 적용됨
암튼 개발자의 수고를 덜어줌..
스프링부트의 각 애플리케이션에는 내장 WAS가 존재함
보통 톰캣 서버를 사용한다
아파치 재단에서 만든 오픈소스 WAS
톰캣은 자바 서블릿과 JSP가 실행할 수 있는 환경을 제공하여 동적인 페이지를 생성함
그리고 DB 연결 및 데이터 조작, 다른 응용 프로그램들과 상호작용이 가능함
❓ WAS(Web Application Server)
웹 서버와 웹 컨테이너의 결합으로 이루어진 소프트웨어
- 웹 서버를 포함하고 있기 때문에 웹 서버처럼 사용할 수도 있음
- DB와 연결되어 트랜잭션 처리를 하거나 다른 시스템과의 연동 기능 또한 포함하고 있음
- 웹 서버와 달리 요청에 대해 동적인 페이지를 만들어 유연하게 응답할 수 있음
즉, 웹 서버는 정적인 컨텐츠만 제공하기 때문에 클라이언트의 요구에 유연하게 대처할 수 없지만
동적인 페이지를 생성해 클라이언트의 요구에 유연하게 대처하기 위해 WAS를 사용하는 것!
개발이 끝나고 서비스를 운영하는 시기에는 해당 시스템이 사용하는 스레드, 메모리, 세션 등의 주요 요소들을 모니터링해야 함
스프링부트에는 '스프링부트 액추에이터'라는 자체 모니터링 도구가 있음
도서 '스프링부트 핵심 가이드'
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 (면접 답변으로 참고!)