반응형
목차
개요
본 포스팅에서는 프로젝트를 위한 디렉토리를 생성하고 application.yml , build.gradle 파일과 docker 위에서 실행하였던 mySQL을 IntelliJ에서 지원해주는 DB관리 도구를 통해 프로젝트와 연결해보자
프로젝트를 위한 디렉토리 생성해주기 (IntellJ 기준)
생성과 함께 설명을 곁들이려한다.
자세한 설명을 듣기 위해서는 아래를 참고해보자
- config
일종의 환경설정 들을 적어 넣을것이다. 보안에 관련된 SecurityConfig 나 프론트엔드와 소통할때 필요한 Cors설정에 관련된 Config도 해당 디렉토리 내에 추가할것이다. - entity
DB와 매핑되는 객체로 객체를 정의한다. - repository
DB를 조작해 유저의 정보나 유저를 찾는 기능을 구현한다. - controller
유저에 관련된 컨트롤러(회원가입, 로그인, 토큰 재발급을 위한 응답을 받거나 준다) - dto
위의 컨트롤러에서 응답을 받고 줄 때 entity에 있는 모든 정보를 주는게 아니라 필요한 정보만 선택하여 데이터를 전달한다. - service
컨트롤러에서 필요한 기능들을 레포지토리를 사용해서 구체적으로 구현한다.- jwt
jwt 토큰에 대해서 토큰의 entity와 일정한 규칙을 가지고 토큰 생성을 하거나 받아온 토큰을 복호화해서 정보를 확인하거나 토큰의 유효성 여부, 토큰과 관련된 config등을 정의할 것이다.
- jwt
build.gradle 작성하기
plugins {
id 'org.springframework.boot' version '3.0.5' // 프레임워크 버전
id 'io.spring.dependency-management' version '1.1.0' //의존성 관리도구 버전
id 'java'
}
group = 'com.~~' // 본인이 설정한 그룹
version = '0.0.1-SNAPSHOT' // 본인이 작성하는 프로그램 버전
sourceCompatibility = '17' // JRA 버전(17로 했었다)
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa' // JPA 의존성
implementation 'org.springframework.boot:spring-boot-starter-security' // SpringSecurity 의존성
implementation 'org.springframework.boot:spring-boot-starter-validation' // Validation 의존성
implementation 'org.springframework.boot:spring-boot-starter-web' // Web 의존성
testImplementation 'org.springframework.boot:spring-boot-starter-test' //테스트시 사용되는 의존성
testImplementation 'org.springframework.security:spring-security-test' //테스트시 사용되는 의존성
compileOnly 'org.projectlombok:lombok' //Lombok 의존성
annotationProcessor 'org.projectlombok:lombok' //Lombok 의존성
runtimeOnly 'com.mysql:mysql-connector-j' // MySQL 드라이버 의존성
// 아래는 추가해주자! jwt 토큰을 구현할때 필요한 의존성들
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'
implementation 'org.slf4j:slf4j-api' // slf4j 관련 패키지 의존성
implementation 'ch.qos.logback:logback-classic' // 디버깅시에 로그를 찍어보는 의존성 (선택)
}
test {
useJUnitPlatform()
}
appication.yml 작성하기
spring:
h2:
console:
enabled: true
datasource:
//localhost의 3306번 포트 그리고 test 스키마에 연결하고 시간대를 서울로 맞추는 코드
url: jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&allowPublicKeyRetrieval=true
//유저 이름
username: root
//유저 비밀번호
password: 1234
// 필수 사항!
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
// 옵션은 상황에 맞게 하는데 이전 포스팅을 따라온 사람이라면 update로 해도 무방하다.
ddl-auto: update
properties:
hibernate:
dialect: org.hibernate.dialect.MySQLDialect
format_sql: true
show_sql: true
logging:
level:
com.tutorial: debug
jwt:
//무작위의 string을 써넣는다 나중에 jwt을 만들기 위한 변수로 사용할것이다.
secret: c3ByaW5nLWJvb3Qtc2VjdXJpdHktand0LXR1dG9yaWFsLWppd2tYm9vdC1zZWN1cml0eS1qd3QtdHV0b3JpYWwK
IntellJ docker로 실행한 MySQL과 연결하기
우측 상단의 database 탭에서 좌측에 있는 + 버튼을 누르고 MySQL을 선택해준다.
이후에 해당 창이 뜰텐데 포스팅을 따라왔다면 아래와 같이 적어주자 User명과 password는 자신이 설정한것으로 적어주어야한다.
작성이 완료되었으면 아래의 Test Connection을 클릭해보자!
정상적으로 작동하면 이처럼 Succeeded가 뜨게 될것이다 .이후에 OK를 클릭하면 비어있던 Databases의 창 안에 해당 db가 잡히게 될것이다.
이후에는 이전 포스팅에서 같이 설치했던 WorkBench 등을 통해서 테이블을 생성하거나 수정하면 된다.
마무리
다음 포스팅에서는 MySQL db 형식을 위한 entity 생성과 그에 따른 레포지토리 생성 등에 대해서 배워보자!
'Spring' 카테고리의 다른 글
SpringBoot+MySQL(JPA) 회원가입,JWT 로그 구현하기 - (2) (1) | 2023.06.23 |
---|---|
스프링 JPA: 엔티티 필드의 기본값에 대한 고찰 (0) | 2023.06.21 |
@Transient 어노테이션과 DTO를 사용한 레이어 분리 (0) | 2023.04.22 |
SpringFramework 구성요소 (0) | 2023.04.10 |
SpringBoot+MySQL(JPA) 회원가입,JWT 로그인 구현하기 - (0) (2) | 2023.04.10 |