java/spring 환경 설정을 하다가 알게된 것이 있다.
spring은 일정 버전의 java만 지원해 준다는 것이다...
spring Framework 버전 지원 확인 : https://spring.io/projects/spring-framework#support
spring에서 지원하는 java 버전 확인 : https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-Versions
위 사이트에서 나오는 정보를 보자.


이를 봤을때 알 수 있는것은, spring 프레임워크는 업데이트 주기가 정말 빠르고 java 버전 호환을 꼼꼼하게 채크해야 된다는 것이다...

지원하는 JDK는 다음과 같다.
하지만 판단 기준이 좀 더 명확해야 함으로, jetbrain의 통계를 확인해 보았다.
https://www.jetbrains.com/ko-kr/lp/devecosystem-2023/java/
-> 2023년 java 통계 / jetbrain

java8 버전을 가장 많이 사용하는 것으로 나왔다.
실제로, 8,11,17 버전은 지원기간이 엄청나게 길다.(출처 : Oracle , JDK Version Check 링크는 아래)
그렇다면..SpringBoot는 어떤 버전을 지원하는지 알아보자.
SpringBoot : https://docs.spring.io/spring-boot/installing.html

SpringBoot 사이트를 뒤적이다가 고민이 없어지는 글을 봤다.
다행인지는 모르겠지만, JDK 17버전 이상을 지원한다는 것이다.(SDK Software development kit)
그래서 쓰게 된 김에 오히려좋아 의 이유를 적어보자면
LTS 버전 지원 확인은 다음 사이트에서 가능하다.
JDK Version check : https://www.oracle.com/kr/java/technologies/java-se-support-roadmap.html
그렇다면 최종적으로는 17, 21 버전 두개가 남게되는데,
여기서 한가지 눈에 띄는게 있다.
Java Virtual Thread : https://docs.oracle.com/en/java/javase/21/core/virtual-threads.html#GUID-DC4306FC-D6C1-4BCC-AECE-48C32C1A8DAA
Virtual Thread 정리 기술블로그 : https://mangkyu.tistory.com/309
바로 자바 가상 쓰레드라는 것이다.
아직은 정확하게 파악되지 않았지만 이해한 내용을 간단하게 말하자면
그렇기에, 21버전으로 코딩을 한 후에 Virtual Thread를 사용한 최적화를 기대할 수도 있을 것이다. 지금 당장은 해야할 일이 많기에, 배포 단계에서 다시 살펴볼 예정이다.
정리를 하자면
를 사용할 것 같다.
솔직하게 적어보자면
SpringBoot를 잘 써보지 않아서 버전마다 차이를 잘 모르겠다..
Typescript는 이전 프로젝트에서 써본 4.9.5 버전을 사용할 것 같다.
React는 이전 프로젝트에서 18버전을 사용했었다.
React 19버전은 올해 4월에 release 되었으나, 아직 나온지 얼마 되지 않아 안정화될 때까지는 사용을 자제하려고 한다.(현시점 6월 23일/release 5월 25일)
최신버전인 16.3버전을 사용할 것이다.
정말 열심히 검색해보았지만 정보가 너무없다.....
그나마 나온 정보라곤 16.3 버전이 보안성이 강화되었다는것만 나오고,
버전별 선택 가이드조차 나오지 않는다.
일단은 사용하면서 배워보자.
Intellij를 사용할 것 같다.
이유는 다음과 같다.
IntelliJ 에서 Java21로 프로젝트 생성

SpringBoot 설치

종속성은 다음에 다루도록 하겠다.

레포를 하나 판 다음 연결하였다.


Project에서 레포지토리를 따로 파지 않고 하나의 프로젝트에서 React/Spring 둘다 사용한다.(java 폴더가 spring 백엔드 파일)
백엔드와 프론트 사이에 proxy를 설정했다.
//setupProxy.js
const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = function(app) {
app.use(
'/api',
createProxyMiddleware({
target: 'http://localhost:8080',
changeOrigin: true,
logLevel: 'debug',
})
);
};
그리고 백/프론트 서버가 독립적으로는 잘 돌아가는게 확인이 된다.
참고 사이트 : https://velog.io/@wlsdud11457/React-Spring-%EC%97%B0%EB%8F%99-%EB%B0%A9%EB%B2%95


하지만...


백엔드에서 데이터를 호출했을때 연결이 안되는 버그가 나타났다.
거의 하루가 걸려서 해결하였다.
@GetMapping("/hello")
public String test() {
return "Hello, world!";
}
어째서인지 proxy를 통과할때 /api가 짤려서 들어오는 것이었다...
이거 때문에 stackoverflow와 온갖 기술블로그를 다돌아다니면서 환경변수 잘못인지, cors인지 다 확인했었는데 정말 기운이 빠진다..

그래도 결국은 되었다....
이제 환경설정은 끝났으니 프로젝트 구조 잡고 코딩하면 된다.
야호!