- Spring Web
- 기능: 이 의존성은 웹 애플리케이션을 구축할 수 있도록 지원합니다. RESTful 웹 서비스를 포함한 다양한 웹 기반 애플리케이션을 개발할 때 사용됩니다. Apache Tomcat이 기본 내장 웹 서버로 제공되어, 별도의 웹 서버 설치 없이 쉽게 웹 애플리케이션을 실행시킬 수 있습니다.
- Thymeleaf
- 기능: Thymeleaf는 서버 사이드에서 HTML을 동적으로 생성하는 모던 템플릿 엔진입니다. 웹 및 독립 환경 모두에서 사용될 수 있으며, 표준 HTML 파일을 템플릿으로 사용하기 때문에 웹 디자이너와 개발자 모두에게 친숙한 작업 환경을 제공합니다. 또한, 웹 브라우저에서 정적 프로토타입을 직접 볼 수 있어 개발 과정이 원활해집니다.
- Lombok
- 기능: Lombok은 자바 개발을 할 때 반복되는 코드 작성을 줄여주는 라이브러리입니다. @Data, @Getter, @Setter 등의 어노테이션을 사용하여 자동으로 getter, setter, equals, hashCode, toString 같은 메서드를 생성해줍니다. 이로써 개발자는 모델이나 DTO(Data Transfer Object) 같은 클래스를 더 깔끔하게 유지할 수 있습니다.
- Spring Data JPA
- 기능: Spring Data JPA는 Java Persistence API(JPA)를 쉽게 구현할 수 있도록 도와주는 모듈입니다. 데이터베이스와의 상호 작용을 추상화하여 복잡한 데이터 접근을 간단하게 처리하고, 저장소 계층을 더욱 깔끔하게 구현할 수 있도록 지원합니다. Hibernate 같은 JPA 구현체를 사용하여 관계형 데이터베이스를 더욱 효율적으로 다룰 수 있습니다.
- H2 Database
- 기능: H2는 Java 기반의 인메모리 데이터베이스로, 개발과 테스트 목적에 아주 적합합니다. 인메모리 모드에서는 데이터베이스가 메모리에 상주하므로 애플리케이션 실행 시 빠르게 시작할 수 있고 종료 시 데이터가 사라집니다. JDBC API 및 R2DBC를 지원하며, 웹 브라우저나 스탠드얼론 모드를 통해 데이터베이스에 접근할 수 있습니다. 이로써 개발 중에 데이터베이스 관리가 간편해집니다.
스프링부트 라이브러리
package jpabook.jpashop;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Hello {
private String data;
}
package jpabook.jpashop;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class JpashopApplication {
public static void main(String[] args) {
Hello hello = new Hello();
hello.setData("hello");
String data = hello.getData();
System.out.println("data = " + data);
SpringApplication.run(JpashopApplication.class, args);
}
}
Lombok
Lombok은 자바(JAVA) 개발을 할 때 반복되는 코드를 줄이고, 보다 간결하고 깔끔한 코드를 작성할 수 있게 도와주는 라이브러리입니다. Lombok은 컴파일 시점에서 지정된 어노테이션을 분석하고, 해당하는 코드를 자동으로 생성해줍니다. 이러한 방식으로, 개발자는 반복적인 메소드 작성의 수고를 덜 수 있습니다.
주요 특징 및 기능
- @Getter / @Setter
- 이러한 어노테이션들은 클래스 필드에 대한 getter 및 setter 메소드를 자동으로 생성합니다. 위 코드에서 @Getter와 @Setter 어노테이션은 Hello 클래스의 data 필드에 대해 해당 메소드들을 생성하므로, 개발자는 이를 수동으로 작성할 필요가 없습니다.
- @Data
- 클래스에 이 어노테이션을 붙이면, @Getter, @Setter, @ToString, @EqualsAndHashCode, 그리고 @RequiredArgsConstructor 어노테이션을 한 번에 적용하는 효과가 있습니다. 즉, 이 어노테이션 하나로 다수의 반복 코드를 생성할 수 있습니다.
- @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor
- 이 어노테이션들은 각각 파라미터가 없는 생성자, 필수 필드만을 파라미터로 갖는 생성자, 모든 필드를 파라미터로 갖는 생성자를 자동으로 생성합니다.
- @Builder
- 이 어노테이션을 사용하면 빌더 패턴을 쉽게 구현할 수 있습니다. 빌더 패턴은 인스턴스 생성 과정을 단계적으로 수행하고, 최종적으로 생성된 객체를 반환하는 디자인 패턴입니다.
- @Slf4j
- 로깅을 위한 어노테이션으로, 로거(Logger) 객체를 자동으로 생성합니다. 이를 사용하면 별도로 로거를 선언하고 초기화할 필요가 없습니다.