웹/Spring

[Spring] Spring Boot

킹형준 2025. 2. 8. 17:59

Spring Boot

build.gradle 파일, 이제는 무슨 말인지 조금은 알겠음

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 서버를 내장하도록 하여 웹 애플리케이션을 실행하면 바로 웹 서버가 실행되도록 하여 빌드 및 배포에 용이하다.

 

프로퍼티 파일

application.yml 파일

자동 설정 되는 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