스프링 라이브러리 정리

김재훈·2023년 4월 16일
0

SpringBoot

목록 보기
2/6

라이브러리란 ?

라이브러리란 코드를 작성할 때 필요한 기능들을 미리 만들어놓은 코드의 집합이다. 즉, 라이브러리는 다른 개발자들이 만든 코드를 가져와서 활용함으로써 개발 속도를 높이고 코드의 재사용성을 높일 수 있다. 즉, 라이브러리는 개발자가 작성하는 코드에 대한 일종의 보조적인 역할을 한다.

프레임워크란 ?

프레임워크는 개발자가 작성하는 코드의 구조와 규칙을 정해놓고, 이를 기반으로 개발자가 필요한 기능을 개발하도록 돕는 도구이다. 즉, 프레임워크는 개발자가 작성하는 코드에 대해 제어력을 가지고 있으며, 개발자는 프레임워크가 제시하는 규칙과 구조에 맞춰서 코드를 작성해야 한다.

둘의 차이 ?

간단히 말하자면, 라이브러리는 개발자가 필요한 기능을 가져와서 사용하는 도구이고, 프레임워크는 개발자가 작성하는 코드의 구조와 규칙을 정해놓고, 이를 기반으로 개발자가 필요한 기능을 개발하도록 돕는 도구이다.

따라서 라이브러리와 프레임워크의 차이는 개발자가 코드를 작성하는 방법과 역할에 있다.





스프링의 라이브러리

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

한 예로 내가 웹 프로젝트를 위해 만든 SpringBoot 프로젝트의 build.gradle을 살펴보면 dependencies에 추가해준 thymeleaf와 starter-web 그리고 자동으로 추가된 test로 구성되어 있다.

하지만 막상 IntelliJ의 External Libraries를 살펴보면

내가 추가하지 않은 라이브러리들이 굉장히 많다.

이러한 이유는 Maven이나 Gradle같은 Build 툴들은 의존관계를 관리해주는데, 내가 starter-web을 라이브러리로 땡겼을 시,

starter-web이 필요한 라이브러리를 같이 가져온다. 소위 말해 이 라이브러리들도 의존관계를 가지고 있는 것이다. starter-web 라이브러리를 이용하려면 spring-tomcat이나 webmvc같은 라이브러리들이 필요하다.

compileClasspath

인텔리제이의 오른쪽에 Gradle을 클릭하면 Dependencies에 dependency로 설정해준 thymeleaf와 starter-web을 확인할 수 있다. 열어보면 그 안에 다른 dependency가 있는데 그 안에 또 다른 dependency가 있고 또 다른 dependency가 있다. 그런식으로 계속 라이브러리를 가져온다.

starter-web 안을 자세히 살펴보면 starter-web안에 start-tomcat이 내장되어 있다. starter-web안에 tomcat 라이브러리가 내장되어 있어서 실행만 해도 웹 서버가 뜨기때문에 따로 WAS를 설정해 줄 필요가 없다.

다음은 thymeleaf 안에 있는 라이브러리를 살펴보자. thymeleaf안에 thymeleaf관련 라이브러리들과 spring-boot-starter 라이브러리가 있다. 그 안에 logging이나 spring-core 라이브러리 등이 있다.

testCompileClasspath

test를 열어보면 여러가지가 있는데, 테스트할때 쓰는 JUnit과 mockito, assertj 등 테스트를 도와주는 라이브러리가 있다.





정리

  • spring-boot-starter-web
    • spring-boot-start-tomcat : 톰캣(웹서버)
    • spring-webmvc : 스프링 웹 MVC
  • spring-boot-starter-thymeleaf : 타임리프 템플릿 엔진(View)
  • spring-boot-starter(공통) : 스프링 부트 + 스프링 코어 + 로깅
    • spring-boot
      • spring-core
    • spring-boot-starter-logging
      • logback, slf4j

*테스트 라이브러리*

  • spring-boot-starter-test
    • JUnit : 테스트 프레임워크
    • mockito : 목 라이브러리
    • assertj : 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
    • spring-test : 스프링 통합 테스트 지원
profile
사랑페페집사

0개의 댓글