Spring Initializr
파일 구조
- java 파일들은 솔직히 위치는 상관없을 듯 하고 파일 구조도 개인 마다 다르니 참고로만,
이름들도 딱히 상관 없을 듯 하다. 나중에 클래스 선언 때 맞춰서 쓰기만 하면 되니
![](https://velog.velcdn.com/images/dbtmdgks7897/post/e585e6ef-4357-4466-bbd3-6bfedb81aa56/image.png)
- ResponseDTO.java
api 요청 후 반환 시 데이터를 구조화 해놓음.
- FirebaseInit.java
파이어 베이스 설정 초기화(?) 서버에서 파이어베이스 서비스 이용 시 필요한 듯 하다.
- 컨트롤러, 서비스 이름이 apiV1인 건 컨트롤러 return이 ModelAndView가 아닌 데이터이기 때문에 맞춰놓은 것.
- firebase-messaging-sw.js
백 그라운드에서 알림 도착 시 실행할 코드를 적는 듯 하다. (정확하지 않음)
- index.html 파일 이름을 index로 해놓으면 spring boot에서 자동으로 매핑을 해준다. 이로 인해 controller가 필요 없음. 그냥 편하려고 해놓음.
- bekig-b82dd-firebase-뭐시기
아까 콘솔에서 발급받은 '비공개 키'. 파일 형태로 나오기 때문에 resources안에 넣어놓음.
나중에 FirebaseInit 파일에서 이 파일을 불러다 씀.build.gragle
DTO 값 유효성 검사를 위한 validation과 firebase 서비스 이용을 위한 dependencies 추가함.
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 'com.google.firebase:firebase-admin:9.2.0'
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()
}