[SpringBoot] 프로젝트 환경설정 및 구조 알아보기
프로젝트 생성
- 프로젝트는 Java 기반의 Gradle 프로젝트 생성
- 버전은 2점대 버전 사용 예정
- 스프링 부트 3.0 이상을 사용하게 될 시에는 JDK 17버전 이상, Javax 패키지를 사용할 수 없으므로 패키지 이름을 Jakarta로 변경해야 한다고 함
- Dependency에 사용할 패키지를 추가한 후 프로젝트를 생성하면 기본 보일러 플레이트가 제공된 스프링 프로젝트가 다운로드됨
프로젝트 구조
- src : 프로젝트의 기능을 구현하는 코드들을 작성.
- main : 실제 코드들
- test : 테스트 주도 개발을 위한 코드들 작성
- gradle : xml을 통한 프로젝트 세팅 대신 Groovy 기반의 빌드를 위한 프레임워크. 빌드의 자동화를 지원해줌, Maven과 더불어 많이 사용됨
- gradlew, gradlew.bat : 각각 유닉스, 윈도우용 실행 스크립트
- gradle/wrapper : 실행 스크립트가 Gradle Task를 실행하기 위한 설정파일과 실행파일이 있음
- build.gradle : 프로젝트의 패키지간 의존관계와 플러그인을 설정하는 파일
- settings.gradle : 프로젝트의 정보를 구성하는 파일
build.gradle
- plugin : 프로젝트에서 환경구성에 사용될 Gradle 플러그인
- group, version, sourceCompatibility : 프로젝트 그룹, 버전, 자바버전
- repositories : 패키지를 다운로드할 저장소
- dependencies : 사용할 패키지를 추가
- IntelliJ에서 build.gradle을 편집한 후 오른쪽의 새로고침 버튼을 누르면 의존성 들을 다시 빌드해준다.
IntelliJ 설정
Preferences의 Build Tools/Gradle에서 실행 시 빌드 옵션을 Gradle에서 InteliJ IDEA로 바꿔주면 자바로 바로 실행시켜 실행속도가 더 빨라진다.
Preference -> Plugins에서 Lombok을 활성화 해준 후 재시작해준다.
Preference -> Annotation Processors에서 Enable Annotation Processin을 체크 후 재시작
위 두 개의 설정은 Lombok 사용을 위한 설정으로
Lombok은 Java에서 반복되는 메소드들을 Annotation을 통해서 자동으로 작성해주는 라이브러리다.
package jpabook.jpashop;
import lombok.Getter;
import lombok.Setter;
@Getter @Setter
public class Hello {
private String data;
private String data2;
}
Lombok의 Annotation을 사용하면 다음과 같은 data1과 data2에 대한 Getter과 Setter에 대한 메서드를 자동으로 작성해준다.
스프링 부트 라이브러리 살피기
spring-boot-starter
1. spring-boot : 스프링을 편리하게 사용할 수 있도록 지원
2. spring-core : 컨테이너, DI, IoC 등 스프링의 핵심기능
3. spring-boot-strter-logging : 로깅, logback, slf4j
spring-boot-starter-web
1. spring-boot-starter-tomcat : 웹 서버, 내장 톰켓을 가지고 있음
2. spring-webmvc : 스프링 웹 MVC 사용
spring-boot-starter-data-jpa
데이터베이스 연동을 위한 라이브러리들의 모음
JPA : Java 진영에서 ORM으로 사용되는 기술 표준 인터페이스를 모아둔 것(특정 기능을 하지는 않음), Hibername, OpenJPA등이 실제 구현함
Hibernate : ORM 프레임워크의 한 종류. JPA 인터페이스의 실제 구현하는 역할
Spring data JPA : JPA를 더 쉽게 사용할 수 있도록 하는 인터페이스를 제공하는 역할. Repository와 같은 추상화된 인터페이스를 제공함
JDBC : 실제로 데이터베이스와 연동하여 연결 및 쿼리를 수행하는 역할.
Ref : https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html |
Ref : https://suhwan.dev/2019/02/24/jpa-vs-hibernate-vs-spring-data-jpa/ |
1. spring-boot-starter-aop : spring의 관점지향 프로그래밍 사용
2. spring-boot-starter-data-jdbc :
- HikariCP : 커넥션 풀로 사용
3. Hibernate : 하이버네이트 + JPA
4. Spring data JPA : 스프링 데이터 JPA
spring-boot-starter-thymeleaf
웹 템플릿 엔진으로 사용
spring-boot-starter-test
1. junit : 테스트 프레임워크. Junit4와 Junit5의 사용 방법이 다르다고 함
2. assertj: 테스트 코드를 편리하게 작성하도록 도와줌
3. spring-test : 스프링 통합 테스트 지원
해당 포스팅은 본 강의 수강을 따라가면서 작성합니다.
'Backend > Spring' 카테고리의 다른 글
[Spring Boot/JPA] 영속성 컨텍스트와 준영속 컨텍스트 (0) | 2023.05.09 |
---|---|
[SpringBoot] Repository/Service/Controller 계층 개발 (0) | 2023.05.09 |
[SpringBoot] Repository와 EntityManager 의존성 주입 (0) | 2023.05.02 |
[SpringBoot] Entity 클래스 개발하기 (0) | 2023.04.06 |
[SpringBoot] H2 데이터베이스 연동해보기 (0) | 2023.03.30 |