본문 바로가기

Spring_SpringBoot/이론

SpringBoot 의존성 관리

스트링 부트를 구성하는 핵심 요소는 스타터(Starter), 자동설정(AutoConfiguration), 액추에이터(Acturator)다.

 

1. 스타터 : 스프링이 제공하는 특정 모듈을 사용할 수 있도록 관련된 라이브러리 의존성을 해결한다.

2. 자동설정 : 스타터를 통해 추가한 모듈을 사용할 수 있도록 관련된 빈 설정을 자동으로 처리해준다.

3. 액추에이터 : 스프링 부트로 개발된 시스템을 모니터링할 수 있는 다양한 기능을 제공한다.

1. 스타터

기존의 Spring-Frame의 경우에는 직접 pom.xml에 의존성(dependency)를 주입하거나 직접 파일을 업로드했어야 했다.

하지만 JPA의 경우를 예로 들면, 하이버네이트 관련 의존성만 추가했다고 해서 스파링과 JPA연동을 바로 처리할 수는 없다는 것이다. 즉 스프링과 JPA를 연동하기 위해서는 하이버네이트 말고도 spring-orm.jar나 spring-data-jpa.jar같은 라이브러리들이 추가로 필요하다.

 

그래서 Spring-Boot의 경우에는 필요한 라이브러리들을 관련된 것끼리 묶어서 마치 패키지처럼 제공한다.

→ 따라서 프로젝트에서 사용하고 싶은 모듈이 있으면, 그 모듈에 해당하는 스타터만 의존성으로 추가하면 된다.

 

※ 예시 화면은 다음과 같다

 

 

 

#참고 : spring-boot-starter-web은 스프링 프레임워크에 있는 기본적인 MVC패턴을 사용하기 위한 의존성 주입이다.

 

의존성은 spring-boot-starter-parent  →  spring-boot-dependencies 순으로 확인하면 dependency를 확인할 수 있다.

결국 맨 하위에 있는 pom.xml에서 version같은 것을 재정의할 수 있다는 것이다.

But. 

여기서 문제점이 존재하는데 spring-boot-starter-web에 대한 의존성을 변경하면 그와 관련된 라이브러리도 버전에 맞추어져 버린다. 그렇다면 이를 해결하기 위해서는 property를 수정하면 된다.

 

Properties만 수정

2. 자동설정

라이브러리가 추가됐다고 해서 추가된 모듈을 바로 사용할 수 있는 것은 아니다.

기존 Spring-FrameWork에서는 설정 파일에 Bean등록도 해주어야한다.

 

그러나 @SpringBootApplication에 의해서 자동주입이 자동설정되는데 @SpringBootApplication에 있는 @EnableAutoConfiguration 어노테이션이기 때문이다.

 

SpringBootApplication에 가장 중요한 어노테이션(Annotation)은

@SpringBootConfiguration, @ComponentScan, @EnableAutoConfiguration 세 개다.

 

1) SpringBootConfiguration

- SpringBootConfiguration은 Configuration과 동일하다.

 

2) ComponentScan은

- Configuration, @Repository, @Service, @Controller, @RestController가 붙은 객체를 메모리에 올리는 역할을 한다.

 

3) EnableAutoConfiguration

- 자동설정과 관련된 어노테이션이다.