[SpringBoot] IntelliJ, MySQL, gradle 1. 시작하기 및 기본 설정

황유민 Yoomin Hwang·2024년 7월 26일

WEB

목록 보기
8/15

spring initializr로 프로젝트 생성하기

https://start.spring.io/

1. 위의 사진처럼 설정해주고 GENERATE 누르기
2. 프로젝트 생성하면 압축 파일이 다운로드 될 건데 압축 해제한 파일 컴퓨터의 원하는 위치로 이동 후 작업 시작하면 됨

설명

기본

  • Spring Boot 버전이랑 Java 버전이랑 차이 나면 에러 뜨는 경우 있음
  • 2024.07 Java 22 정도가 가장 최신일 거임
  • java -version 해서 확인할 수 있음

group, artifact 등 설정 사항

group: com.<원하는 패키지명...>

  • 서버 다 만들고 백엔드 코드 다 작성하고 build 더블클릭하면 패키지가 생길건데 그 이름을 뭘로 할거냐는 거니까 크게 신경 안 써도 되는 부분임
  • package name = group name + artifact name

description: 쓸모 없음

packaging: JAR

  • JAR: Java 코드의 편리한 컨테이너 (컴파일된 .class 실행 파일을 포함하여 여러 파일이 압축된 단일 파일)
    더 자세한 내용은 여기서

Dependencies

Spring Boot를 사용하는 이유라고 할 수 있겠음

  • Spring Boot 도 사실 역사가 길지 않음
  • 웹 개발자들:
    "백엔드도 객체지향으로 해보자"
    "자바가 객체지향이네?"
    "근데 해보니까 너무 복잡하다"
    => 더 쉬운 framework 만들어보자 → spring ("백엔드에 봄이 왔구나" 해서 spring)

근데 또 하다보니까 더 편한 framework 있으면 좋겠는걸 해서 나온 게 Spring Boot

Spring Boot 쓰는 이유:
dependencies에서 많은 것을 지원해주기 때문

  • Tomcat: browser에 띄워주는 역할
  • Spring 으로 하려면 Tomcat 다운 받아서 해야 하는데 Spring Web 을 추가해주면 안 해도 됨

그 외의 dependencies의 역할도 궁금하면 찾아보기!

dependencies 선택 목록:
1. Spring Web
2. Spring Data JPA

  • Java Persistence API
  • 스프링에서도 JAVA 언어를 번역해주는 JAVA에서 제공하는 API
  • 자바와 SQL을 연동해준다는 의미
  • ORM (Object-Relational Mapping) 개념에서 옴: ORM 하는 여러 가지 방법 중 하나가 JPA 임
  • JPA가 SQL 문을 번역해줌 → 번역된 SQL 문을 console 로 보여줌
  1. MySQL Driver
  • MySQL JDBC driver
  1. Lombok
  • annotation library
  • 코드 수를 줄여줌
  1. 그 외
  • 로그인 기능 할 때만 선택하는 dependencies 있는데 이건 설정 잘못해주면 오류 뜨니까 일단은 로그인 안 할거면 선택하지 말기

DB 연결

application.yml 또는 application.properties

이 파일은 DB의 중요한 정보들, 그 외 일급 비밀 사항들이 저장되는 문서이므로 절대 깃허브에 올라가서는 안 됨

spring:
    datasource:
        url: jdbc:mysql://localhost:3306/디비명?serverTimezone=UTC&characterEncoding=UTF-8
        username: root 또는 설정한 username
        password: 디비 비번
    jpa:
        show-sql: true
        properties:
            hibernate:
                format-sql: true
        hibernate:
            ddl-auto: update # create-drop
  • yml 파일은 이렇게 구성하면 됨
  • 마지막에 주석처리한 crop-drop 속성은 서버가 다시 실행될 때마다 저장된 내용들 사라지게 해주는 설정인데 쓸모 없는 데이터가 많이 올라가는 테스트할 때 유용함
  • application.properties 은 형식만 다를 뿐 인터넷에 찾아보면 알 수 있듯이 들어가는 내용은 거의 똑같다고 보면 됨

.gitignore

  • 아까 말했듯이 프론트의 .env 파일처럼 백에서는 이 yml, properties 파일들이 절대로 공용 공간에 올라가면 안됨
  • 나쁜 사람들이 순탄하던 우리 인생의 난이도를 급상승시킬지 모르기 때문
  • 뿐만 아니라 사람들의 개인정보가 담길지도 모를 데이터베이스에 아무나 접근 가능하게 하는 것은 상식적으로 막아야 하는 일이기 때문

따라서 .yml 확장자인 모든 파일을 .gitignore 파일에 넣어주어서 그런 리스크를 없애야 함

HELP.md
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

*.yml
application.properties

### STS ###
.apt_generated
.application.yml
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/

0개의 댓글