Spring Boot
Spring Boot를 이용하여 웹 애플리케이션을 처음 개발할 때 설정 파일(application.properties, build.gradle 등등)이 엄청나게 복잡하게 작성된 것을 보고 이런 것들 하나하나를 언제 다 공부하려나 싶었던 때가 있었다.
Spring Boot는 Spring Framework를 더 간편하게 사용할 수 있도록 도와주는 프레임워크이다. 애플리케이션의 초기 설정이 훨씬 쉬워지고, 필요한 라이브러리를 빠르게 추가할 수 있다.
- 자동 설정(Auto Configuration)
라이브러리가 제공하는 클래스의 Bean 정의와 스프링이 제공하는 각종 기능의 활성화를 자동으로 설정해준다.
즉 자주 사용되는 기능들을 Bean으로 등록하도록 미리 작성해둔 JavaConfig 클래스들을 불러온다.
- 스타터 의존성
Spring Boot는 spring-boot-starter-*라는 스타터 의존성들을 제공한다. 각 스타터는 특정 기능을 구현하기 위한 라이브러리와 설정을 묶어서 제공하며, 이를 프로젝트에 추가함으로써 필요한 기능을 바로 사용할 수 있다. 또한 각 라이브러리들 끼리 버전의 호환성을 자동으로 맞춰준다
- spring-boot-starter-web: 웹 애플리케이션 개발에 필요한 라이브러리
- spring-boot-starter-jdbc: JDBC 관련 라이브러리와 데이터베이스 연결을 위한 설정
- spring-boot-starter-test: 테스트 관련 라이브러리들
- 내장 AP 서버
AP 서버는 자바 웹 애플리케이션을 구동하기 위해 필요한 프로그램이다. AP 서버가 포트를 열어 웹 서버의 역할을, 자바 프로그램이 애플리케이션 서버의 역할을 하도록 나눠져 있던 구조를 Spring Boot에서는 애플리케이션이 AP 서버를 내장하도록 하여 웹 애플리케이션을 실행하면 바로 웹 서버가 실행되도록 하여 빌드 및 배포에 용이하다.
프로퍼티 파일
자동 설정 되는 Bean 항목에 대해 application.properties(YAML도 가능) 파일을 사용해 커스터마이징할 수 있다. 예를 들어 DataSource 객체의 Bean을 자동설정할 때 DBMS의 경로, 계정/암호는 애플리케이션마다 달라질 수 있다.
@SpringBootApplication 애노테이션
@SpringBootApplication
public class ExampleApplication{
public static void main(String[] args){
ApplicationContext ac = SpringApplication.run(ExampleApplication.class, args);
}
}
앞서 Spring에서 DI 컨테이너를 생성하는 방법으로 AnnotationConfigApplicationContext를 사용하는 방법을 소개했는데, Spring Boot 에서는 SpringApplication.run() 메소드를 사용한다. 첫 번째 인수로 컨테이너에 전달할 JavaConfig 클래스를 지정하고, 두 번째 인수로 커맨드라인 인수를 컨테이너에 넘겨 필요에 따라 참조하도록 한다. run 메소드 실행 시 생성된 스프링 컨테이너가 반환된다.
@SpringBootApplication은 사실 3개의 주요 애노테이션을 합친 것이다
1. @EnableAutoConfiguration
Spring boot에서 제공하는 자동 설정 기능을 활성화한다. 프로젝트 dependencies와 application.properties 파일을 읽어 필요한 bean들을 자동 등록하도록 한다.
2. @ComponentScan
해당 클래스가 작성된 패키지부터 하위 패키지를 전부 스캔하여 @Configuration, @Component 등의 애노테이션을 읽어 Bean을 등록한다. 따라서 main함수와 SpringBootApplication 애노테이션이 있는 ExampleApplication 클래스는 소스코드에서 최상위 패키지에 두는게 일반적이다.
3. @Configuration
이 클래스 자체도 컨테이너에 들어가야 하는 JavaConfig 클래스이므로 Configuraton 애노테이션을 붙여준다.
'웹 > Spring' 카테고리의 다른 글
[Spring] @Autowired (0) | 2025.02.10 |
---|---|
[Spring] 싱글톤 컨테이너 (0) | 2025.02.10 |
[Spring] Spring JDBC (0) | 2025.02.08 |
[Spring] Spring Bean (0) | 2025.02.08 |
[Spring] DI란? (0) | 2025.02.06 |