흐름도
- 백엔드 코드 받아오기
- 비쥬얼 스튜디오에서 열기
- 안에 연동을 위한 expo 파일 install
- Proxy & axios 설치
- 진행중에 .env는 babel.config.js를 만들어서 참조 하기.
- Axios_Error 발생
- 해결. 쫌 빡셌음!
- .env를 루트 디렉토리로 이동
- 인식을 못함
- .env에서 jwt_secret을 자기 보안코드에 맞게 바꿔야함 중요!
- 스프링부트 실행완료
- Axios_Error 부분은 local호스트가 아닌 자신의 IP4주소 :8080해야한다.
Ex) http://192.168.45.114:8080
경우 2: 프론트엔드가 백엔드 외부에 있을 때(해봐야 하는건데. 바로될듯?)
• 프론트엔드 위치: C:/Users/username/frontend
• API 호출:
o 동일하게 http://localhost:8080 같은 API를 호출합니다.
• 1️EXPO 프로젝트(프론트엔드)와 백엔드(SPRING BOOT) 프로젝트가 있다.
2️백엔드에서 필요한 설정을 한다. (EXPO 관련 X)
3️프론트엔드(React Native)에서 axios를 설치한다.
4️프론트엔드에서 axios를 사용해 백엔드로 요청을 보낸다.
5️백엔드가 실행되어 있어야 요청을 받을 수 있다.
6️백엔드가 데이터베이스(MySQL)와 연동되어야 한다.
7️백엔드에서 받은 요청을 처리하고 응답을 보낸다.
8️프론트엔드가 응답을 받고 화면에 표시한다.
동작: 백엔드 부분 ./gradlew bootRun 로 백엔드 실행.
하지만 JWT_SECRET 관련 오류는 반드시 해결해야 합니다.
JWT_SECRET이 설정되지 않으면 인증(Authentication) 관련 기능이 제대로 작동하지 않을 가능성이 높습니다.
https://velog.io/@shdrnrhd113/JWT-Secret-Key-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0 참고
🔍 주요 메시지 분석
- JWT_SECRET와 관련된 오류
text
복사편집
Could not resolve placeholder 'JWT_SECRET' in value "${JWT_SECRET}"
이 메시지는 Spring Boot 애플리케이션이 application.properties 또는 .env 파일에서 JWT_SECRET 값을 찾지 못했다는 것을 의미합니다.
해결 방법
- application.properties 파일 확인:
o src/main/resources/application.properties에 다음 라인이 있는지 확인하세요:
properties
복사편집
jwt.secret=your-secret-key
o 만약 없으면 추가하세요. 여기서 your-secret-key는 실제로 사용하고자 하는 비밀키로 대체해야 합니다.
- .env 파일 확인:
o .env 파일에서 JWT_SECRET 값이 설정되어 있는지 확인하세요:
ini
복사편집
JWT_SECRET=your-secret-key
o .env 파일이 루트 디렉토리에 위치하고 있지 않다면 Spring Boot에서 이를 감지하지 못할 수 있습니다. 올바른 위치에 파일을 배치하세요.
- Spring Boot가 .env 파일을 읽도록 설정: .env 파일을 사용하려면 spring-dotenv 라이브러리를 추가해야 합니다. build.gradle.kts에 다음을 추가하세요:
kotlin
복사편집
dependencies {
implementation("io.github.cdimascio:dotenv-java:3.0.0")
}
백엔드 파트
참고: cd RecipeMatch_Backend-develop/frontend 이걸로 npm start
변경사항:
1번. -> 제 자바 개인적인거라 중간에 21로 그대로 하시면 됩니다.
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
->
java {
toolchain {
languageVersion = JavaLanguageVersion.of(23)
}
}
2번 변경사항
import jakarta.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Value;
@PostConstruct
public void logSecret() {
System.out.println("Loaded JWT_SECRET: " + jwtSecret);
}
이거 application에 추가했는데 단순 콘솔로그 확인이므로 백엔드부분 사실상 건들X
3번 변경사항
src/java 에 컨트롤러 파일 생성:
이유는 백엔드 부분에서 단순 문장만 프론트엔드에 뜨는지 확인차 작업!
4번. Main -> C:\Users\dnwls\Desktop\RecipeMatch_Backend-develop\RecipeMatch_Backend-develop\src\main\java\org\example\recipe_match_backend\config
라는 폴더 생성.
5번 프론트 작업 부분: 영웅씨가 보내주신 블로그 3번 . expo 파일생성.
흐름도
Ex) http://192.168.45.114:8080
경우 2: 프론트엔드가 백엔드 외부에 있을 때(해봐야 하는건데. 바로될듯?)
• 프론트엔드 위치: C:/Users/username/frontend
• API 호출:
o 동일하게 http://localhost:8080 같은 API를 호출합니다.
• 1️EXPO 프로젝트(프론트엔드)와 백엔드(SPRING BOOT) 프로젝트가 있다.
2️백엔드에서 필요한 설정을 한다. (EXPO 관련 X)
3️프론트엔드(React Native)에서 axios를 설치한다.
4️프론트엔드에서 axios를 사용해 백엔드로 요청을 보낸다.
5️백엔드가 실행되어 있어야 요청을 받을 수 있다.
6️백엔드가 데이터베이스(MySQL)와 연동되어야 한다.
7️백엔드에서 받은 요청을 처리하고 응답을 보낸다.
8️프론트엔드가 응답을 받고 화면에 표시한다.
동작: 백엔드 부분 ./gradlew bootRun 로 백엔드 실행.
하지만 JWT_SECRET 관련 오류는 반드시 해결해야 합니다.
JWT_SECRET이 설정되지 않으면 인증(Authentication) 관련 기능이 제대로 작동하지 않을 가능성이 높습니다.
https://velog.io/@shdrnrhd113/JWT-Secret-Key-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0 참고
🔍 주요 메시지 분석
text
복사편집
Could not resolve placeholder 'JWT_SECRET' in value "${JWT_SECRET}"
이 메시지는 Spring Boot 애플리케이션이 application.properties 또는 .env 파일에서 JWT_SECRET 값을 찾지 못했다는 것을 의미합니다.
해결 방법
o src/main/resources/application.properties에 다음 라인이 있는지 확인하세요:
properties
복사편집
jwt.secret=your-secret-key
o 만약 없으면 추가하세요. 여기서 your-secret-key는 실제로 사용하고자 하는 비밀키로 대체해야 합니다.
o .env 파일에서 JWT_SECRET 값이 설정되어 있는지 확인하세요:
ini
복사편집
JWT_SECRET=your-secret-key
o .env 파일이 루트 디렉토리에 위치하고 있지 않다면 Spring Boot에서 이를 감지하지 못할 수 있습니다. 올바른 위치에 파일을 배치하세요.
kotlin
복사편집
dependencies {
implementation("io.github.cdimascio:dotenv-java:3.0.0")
}
백엔드 파트
참고: cd RecipeMatch_Backend-develop/frontend 이걸로 npm start
변경사항:
1번. -> 제 자바 개인적인거라 중간에 21로 그대로 하시면 됩니다.
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
->
java {
toolchain {
languageVersion = JavaLanguageVersion.of(23)
}
}
2번 변경사항
import jakarta.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Value;
@PostConstruct
public void logSecret() {
System.out.println("Loaded JWT_SECRET: " + jwtSecret);
}
이거 application에 추가했는데 단순 콘솔로그 확인이므로 백엔드부분 사실상 건들X
3번 변경사항
src/java 에 컨트롤러 파일 생성:
이유는 백엔드 부분에서 단순 문장만 프론트엔드에 뜨는지 확인차 작업!
4번. Main -> C:\Users\dnwls\Desktop\RecipeMatch_Backend-develop\RecipeMatch_Backend-develop\src\main\java\org\example\recipe_match_backend\config
라는 폴더 생성.
5번 프론트 작업 부분: 영웅씨가 보내주신 블로그 3번 . expo 파일생성.