[Spring] 주요 라이브러리

JIN·2021년 12월 22일
0

오늘은 gradle 의존 관계에 대해 알아보자.

먼저 Gradle이 뭘까?

Gradle 이란?

Gradle은 오픈소스 빌드 자동화 툴이다.
Gradle 은 거의 모든 타입의 소프트웨어를 빌드 할 수 있다.

Gradle의 특징

1. High Performance
Gradle 은 실행시켜야만 하는 task 외에는 다른 불필요한 동작은 하지 않는다. 또, build cache를 사용함으로써 이전 task output 을 재사용 할 수 있다.
마지막으로 build cache를 공유하여 성능을 높일 수 있다.

2. JVM Foundation
Gradle은 JVM 에서 실행되고 ,JVM 을 실행하려면 JDK를 설치해야 한다.
따라서 Java Standard API를 빌드 로직에 사용할 수 있다. 또한 Gradle을 다양한 플랫폼에서 실행할 수 있다.

3. Conventions
Gradle은 Maven으로 부터 의존 라이브러리 기능을 차용했다.
따라서 컨벤션을 따라 자바 프로젝트와 같은 일반적인 유형의 프로젝트를 쉽게 빌드 할 수 있다.

4. Extensibility
Gradle을 확장하면 고유의 task 타입을 제공하거나 모델을 빌드할 수 있다.

5. IDE, Build Scan support
Android Studio, IntelliJ IDEA, Eclipse 등의 IDE에서 Gradle을 임포트하여 사용할 수 있다. 그리고 빌드를 모니터링할 수 있는 Build Scan을 지원한다.

라이브러리 의존성 관리

의존성은 모듈로 제공되는데 이 모듈들을 저장하고 있는 곳을 repository 라고 한다. 레포지토리는 원격이 될 수도 있고 로컬이 될 수도 있다.
Gradle 에게 어디서 의존성을 가지고 올 것인지 알려줄 때는 레포지토리 선언을 통해서 할 수 있다.

dependency resolution

Gradle은 특정 task를 실행시키기 위해 필요한 의존성들을 런타임시에 원격으로 다운로드 받거나 로컬에서 가져온다. 멀티프로젝트를 구성했을 때 다른 프로젝트에서 가져온다. 이 과정을 dependency resolution 이라고 한다.

dependency cache

향후에 불필요한 네트워크 호출을 하지 않기 위해 dependency cache 라는 로컬 캐시에 저장한다.

라이브러리 의존성 설정은 build.gradle 스크립트 파일에서 할 수 있다.

1. Declaring repositories

  1. Format에 따른 구분
    ● Maven 기반 저장소(가장 일반적으로 쓰이는 Maven Central, JCenter, Google Android 등이 있다.)
    ● Ivy 기반 저장소
    ● 로컬 디렉토리 형식 저장소
  2. Connectivity에 따른 구분
    ● 인증 체계가 구성된 저장소(BasicAuthentication, DigestAuthentication, HttpHeaderAuthentication등의 인증 체계가 있다.)
    ● HTTPS, SFTP, AWS S3, Google Cloud Storage 등과 같이 다양한 종류의 원격 프로토콜로 연결 가능한 저장소

스프링부트 라이브러리

  1. spring-boot-starter-web
    ● spring-boot-starter-tomcat: 톰캣 (웹서버)
    ● spring-webmvc: 스프링 웹 MVC
  1. spring-boot-starter-thymeleaf : 타임리프 템플릿 엔진(View)
  1. spring-boot-starter-data-jpa
    ● spring-boot-starter-aop
    ● spring-data-jpa: 스프링 데이터 JPA
    ● hibernate + JPA: 하이버네이트 + JPA
    ● spring-boot-starter-jdbc
    •     HikariCP **커넥션 풀** (부트 2.0 기본)

ps) 커넥션 풀?

웹 컨테이너(WAS)가 실행되면서 DB와 미리 connection(연결)을 해놓은 객체들을 pool에 저장해두었다가.
클라이언트 요청이 오면 connection을 빌려주고, 처리가 끝나면 다시 connection을 반납받아 pool에 저장하는 방식을 말합니다.

커넥션 풀을 왜 사용하나요?

자바에서 DB에 직접 연결해서 처리하는 경우(JDBC) 드라이버(Driver)를 로드하고 커넥션(connection) 객체를 받아와야 한다. 그러면 매번 사용자가 요청을 할 때마다 드라이버를 로드하고 커넥션 객체를 생성하여 연결하고 종료하기 때문에 매우 비효율적이다. 이런 문제를 해결하기 위해서 커넥션풀(DBCP)를 사용한다.

  1. spring-boot-starter-logging
    ● logback, slf4j

테스트 라이브러리

  1. spring-boot-starter-test
    ● junit : 테스트 프레임워크
    ● mockito :목 라이브러리
    ● assertj :테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
    ● spring-test :스프링 통합 테스트 제공

다음에 또 알아보자

profile
배우고 적용하고 개선하기

0개의 댓글