개발 세팅

개요

본격적인 개발에 들어가기에 앞서, 세팅을 먼저 진행한다.
나중에 귀찮은 짓 안 하도록 되도록이면 처음부터 사용할 환경을 비슷하게 맞추는 것이 목표이다.

개발 툴 설정

처음에는 lvim을 사용할 수 있지 않을까 해서, 도전해봤으나 금방 포기했다.
지원하는 언어에 일단 없는 것 같더라고.
그리고 애초에 java 개발을 vim으로 한다는 것 자체가 쉽지 않다고 생각하기는 했다.
그래서 결정한 것은 intelliJ

dev container

Docker Dev Container
저번에 딸깍 도전해봤던 것을 다시 활용해보는 것으로 한다.
https://docs.aws.amazon.com/ko_kr/corretto/latest/corretto-17-ug/amazon-linux-install.html
Pasted image 20240709163811.png
이리저리 해서 일단 첫 단추는 끼웠다.
Pasted image 20240709163949.png
도커파일은 일단 필요한 의존성 설치와, 프로세스 유지만 해주기 위한 명령어 정도.
자바 17이 설치가 잘 안돼서 깜짝 놀랐다;;
Pasted image 20240709164413.png
딱 봐도 시작 문제가 많다.
일단 git이 설치되어 있지 않은 거는 도커파일을 수정했다.
그리고 가장 중요한 것은 역시 SDK를 찾지 못하는 거겠지.
음.
문서를 잘 보니 devel이라는 것이 붙는 버전이 존재해서 그것으로 바꿨더니 문제가 해결됐다.

Spring Initialzr

Pasted image 20240709173646.png
중요한 요소들은 미리미리 추가해준다.
나중에 할 수 있긴 해도 처음 해야 편하다.

인텔리제이 설정

Pasted image 20240710134507.png
기본적으로 컨테이너 위에 환경을 올리는 데에는 성공했다.
그러나 처음 문제가 발생한 지점은 패키지 구조를 이 놈이 제대로 잡아주지 못한다는 것이었다.
조금 찾다가 알게 된 것은, 안 속에서 다시 프로젝트를 열어야 한다는 것.
chatbot이라 이름을 지은 디렉이 있으니 이를 프로젝트 루트로 잡아서 열면 다음부터는 인텔리제이가 위치를 잘 잡아준다.
Pasted image 20240710134636.png
아직 문제가 전부 해결된 것이 아니다.
이거에다가 디비 연결까지 마무리된다면 정말 개발 준비 시작이라고 하겠다.
잘 보니까 스프링 자체가 무조건 디비 연결을 강제하는 모양이다..?

Pasted image 20240710154026.png
일단 코드 상으로는 디비 사용을 안 하는 것을 명시했다.
Pasted image 20240710154113.png
추가적으로 컴포즈 파일에서 사용하게 될 수도 있는 디비 이미지 추가

에러 대응

본격적으로 디비를 연결해보는 과정

runtimeOnly 'com.mysql:mysql-connector-j'

mysql 드라이버를 찾지 못하는 이슈가 있었고, 검색해보니 이런 문구를 추가하라고 써있었다.
나는 객체 지향을 그다지 좋아하지 않는데, 사전 지식을 너무 많이 알아야 하기 때문이다.
만드는 입장에서야 유지 보수가 편리했겠지, 하지만 사용하는 입장에서는 파사드라도 없으면 좀처럼 쉽게 접근하기 어렵다고 생각한다.
개발 툴의 도움을 받지 않으면 개발이 어려운 언어라니, 애초에 이것부터가 그놈의 느슨한 결합을 위해 언어와 툴의 의존성을 높인 꼴이 아닌가.
Pasted image 20240714085118.png
mysql 8.0부터 발생한 이슈.
ssl 인증을 없앨 경우에는 공개키 검색 여부를 지정해야만 한다고 한다.
https://deeplify.dev/database/troubleshoot/public-key-retrieval-is-not-allowed

디렉터리 구조 수정

Pasted image 20240714085320.png
현재는 구조가 이중화되어 있다.
이것 때문에 컨테이너를 킨 후에 프로젝트를 한번 더 열어야 하는 문제점이 존재하여 이걸 수정하고자 한다.