목차
시작하며
기본적인 자바 문법과 스프링부트를 이용한 실습이 어느 정도 진행이 된 상황이라 여러 가지 기능을 가진 게시판 프로젝트를 진행한다.
중간에 실력이 부족하다고 느끼면 학습하는 시간이 필요하겠지만 프로젝트에 필요한 내용들일테니 모두 기록에 담고 진행 예정이다.
첫 번째 기능구현은 사용자 가입과 로그인에 대한 내용이다.
jdk 버전을 변경하느라 환경변수 설정부터 적지 않은 시간을 썼지만 너무 많은 정보들이 다른 블로그에 있으니 jdk 환경변수 설정은 생략한다.
프로젝트 생성
- IDE : IntelliJ Ultimate
- Language : Java
- BuildSystem : Gradle-Groovy
- JDK version : Oracle 21
- SpringBoot version : 3.2.1
- DataBase : MySQL
- Server : Tomcat 9.0.82
Dependencies
현재는 최초 설정이고, 프로젝트를 진행하면서 필요한 것들이 있다면 계속 추가 예정이다.
- Lombok
- Spring Web
- Validation
- Spring Data JPA
- MySQL Driver
implementation 'com.mysql:mysql-connector-j'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
MySQL Shema, Table 생성
MySQL Workbench에서 생성이 가능하다.
프로젝트에 연결할 Shema 생성 (mini_board)
사용자를 저장 할 테이블 생성 (user)
CREATE TABLE IF NOT EXISTS `mini_board`.`user` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
`email` VARCHAR(100) NOT NULL,
`salt` VARCHAR(100) NOT NULL,
`password` VARCHAR(100) NOT NULL,
`status` VARCHAR(50) NOT NULL,
`registered_at` DATETIME NULL DEFAULT NULL,
`unregistered_at` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`));
사용자 가입 시나리오에 필요한 이름, 이메일, 비밀번호를 입력받는다.
가입 시나리오는 이후에 사용자 가입 로직을 진행할 때 내용에 담을 예정이다.
사용자 비밀번호를 암호화해서 저장할 때 사용할 salt라는 column을 추가했다.
application.yaml 설정
JPA, MySQL 연결 설정
최초 프로젝트 생성시에는 [Project > src > main > resources > application.properties]로 생성이 된다.
[Shift + F6] 을 눌러서(Windows OS 기준) application.yaml로 rename 진행
spring:
jpa:
show-sql: true
properties:
format_sql: true
dialect: org.hibernate.dialect.MySQL8Dialect
hibernate:
ddl-auto: validate
datasource:
url: jdbc:mysql://localhost:3306/"본인의 MySQL schema 입력"?useSSL=false&useUnicode=true&allowPublicKeyRetrieval=true
driver-class-name: com.mysql.cj.jdbc.Driver
username: "본인의 MySQL username 입력"
password: "본인의 MySQL password 입력"
혹시 해당 내용을 동일하게 사용할 때 실수하지 않아야 하는 것은
datasource 하위에 있는 url, username, password이다.
첫 번째로 url에 있는 localhost:3306에서 3306 은 mysql port 번호이다. 설치할 때 변경했다면 변경한 포트번호를 적어줘야 한다. 변경하지 않았다면 기본적으로 3306일... 듯?
두 번째로 username에는 본인의 mysql User를 적어줘야 한다. 이 또한 기본은 root로 설정되어 있다.
세 번째로 password에는 본인의 mysql password를 적어줘야 한다.
학습 목적으로 mysql을 오래전에 설치하고 방치했다가 다시 시작하는 사람은 mysql password 찾기/재설정에서 상당히 오래 걸린다. 블로그 검색하면 좋은 글들이 많이 있으니...
마지막으로 코딩을 처음 시작하는 분들은 위의 내용을 그대로 사용하거나 변경해야 하는 부분들 인지했다고 하더라도 쌍따옴표(double quotation)를 넣어야 하나 고민할 수도 있다고 생각한다.
url: jdbc:mysql://localhost:3306/board?useSSL=false&useUnicode=true&allowPublicKeyRetrieval=true
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 1234
이런 형태로 작성해야 한다.
추가로 application.yaml 파일에서의 들여 쓰기는 문법과도 같으니 정확히 맞춰줘야 한다.
모든 설정이 완료된 후 프로젝트의 Application 파일의 main 메서드를 실행한다.
정상적으로 설정이 완료된 상태라면 다음과 같은 화면을 볼 수 있다.
마치며
개인 프로젝트를 진행하며 기록하는 내용이라 정보를 얻고자 하는 누군가에게는 불친절한 글이 될 수도 있지만 댓글에 질문 주시면 제가 아는 선에서는 답변드리도록 하겠습니다.
잘못된 내용도 지적해 주시면 감사하겠습니다.
'프로그래밍 > Project' 카테고리의 다른 글
[Spring] ToyProject 2단계(2) - 역할 분배, 기본 구조 (0) | 2024.01.29 |
---|---|
[Spring] ToyProject 2단계(1) - 시작하기 (0) | 2024.01.28 |
[Project01] MiniBoard(3) - Custom Annotation 생성, 사용자 Model 생성 (0) | 2024.01.25 |
[Project01] MiniBoard(2) - ObjectMapper, SwaggerUI, Filter 설정 (0) | 2024.01.25 |
[Java] ToyProject 1단계 (0) | 2023.12.29 |