[SpringBoot] 프로젝트 환경설정 및 구조 알아보기

2023. 3. 30. 17:19
반응형

프로젝트 생성

 

https://start.spring.io/

  • 프로젝트는 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 :  실제로 데이터베이스와 연동하여 연결 및 쿼리를 수행하는 역할. 



https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html

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 : 스프링 통합 테스트 지원

 

 

 

 

 

 

 

 

 


https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-JPA-%ED%99%9C%EC%9A%A9-1

 

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 - 인프런 | 강의

실무에 가까운 예제로, 스프링 부트와 JPA를 활용해서 웹 애플리케이션을 설계하고 개발합니다. 이 과정을 통해 스프링 부트와 JPA를 실무에서 어떻게 활용해야 하는지 이해할 수 있습니다., - 강

www.inflearn.com

 

해당 포스팅은 본 강의 수강을 따라가면서 작성합니다.

반응형

BELATED ARTICLES

more