java 파일들은 솔직히 위치는 상관없을 듯 하고 파일 구조도 개인 마다 다르니 참고로만,
이름들도 딱히 상관 없을 듯 하다. 나중에 클래스 선언 때 맞춰서 쓰기만 하면 되니
ResponseDTO.java
응답 데이터를 구조화 해놓음.
컨트롤러와 서비스는 데이터를 반환하기 떄문에 api로 이름 설정
ReqBootpayConfirmDTO, ReqOrderSaveDTO.java
각각 프론트에서 승인 요청, 승인 요청 전 DB 저장 요청을 처리할 때 받을 데이터를 담을 DTO
OrderEntity, OrderRepository.java
Order 테이블을 만들고 Jpa를 통해 테이블 생성, 데이터 저장 등 실행
index.html
기본 페이지
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.4'
id 'io.spring.dependency-management' version '1.1.3'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17'
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
// 이거 추가
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'io.github.bootpay:backend:+'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
application.properties를 yml로 바꿔줬다.
DB를 사용하기 때문에 그에 따른 설정을 해줘야 한다.
spring:
thymeleaf:
cache: false # 이전 데이터 캐싱되어 수정 안될 수 있음
datasource:
url: jdbc:h2:mem:testdb;MODE=MySQL;DB_CLOSE_DELAY=-1 # memory에 저장 속도는 빠른데 서버 재시작 시 데이터 날아감
driverClassName: org.h2.Driver # 인터넷 검색
username: sa
password:
h2:
console:
enabled: true # 자체 콘솔 존재
path: /h2
sql:
init: # 서버가 켜질 때 들어갈 데이터
encoding: UTF-8
# schema-locations: classpath:h2/schema.sql
# dataLocations: classpath:sql/data.sql
mode: always
jpa:
defer-datasource-initialization: true # 위의 init에서의 데이터가 들어갈 때까지 기다림
open-in-view: false # 트랜잭션 범위 밖에서 영속성 컨텍스트를 유지할지 여부
database-platform: org.hibernate.dialect.H2Dialect # 어느 형식의 DB를 쓸 지 결정
hibernate: #
ddl-auto: create # create-drop, update, validate, none / #
naming: # 이름 전략
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
show-sql: true # sql 보이게
properties:
hibernate:
format_sql: true # sql 정렬 설정
use_sql_comments: true
servlet:
multipart:
max-request-size: 10MB
max-file-size: 10MB