Develop

이 포스팅은 (1) restdocs + openapi3 + swagger-ui 설정을 해보자 - 설명편에서 이어지는 글입니다. (준비) Swagger-UI 다운로드 https://github.com/swagger-api/swagger-ui/releases Releases · swagger-api/swagger-ui Swagger UI is a collection of HTML, JavaScript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API. - swagger-api/swagger-ui github.com 위 링크에서 Swagger-ui를 다운로드를 받고 나면, 아래와 같이 진행중..
서론 보통 현재 다니고 있는 부트캠프에서 저는 백엔드 포지션으로 개발할 때 프론트엔드와 작업할 때 다음과 같은 순서로 API를 맞춰나갔습니다. 노션으로 처음에 싱크업을 하고, FastAPI(BE)나 MSW(FE)같은 툴을 이용한 Mock 서버 구성을 하여 개발 속도를 맞춘 다음 RestDocs나 Swagger같은 API 문서 자동화 툴을 이용하여 API 문서를 작성 프론트엔드와 협업을 위한 API 문서를 작성할 때 노션에 API 문서를 위와 같은 형태로 많이 작성하곤 했습니다. 노션을 선택했던 이유는 보편화가 많이 되기도 했고, 실시간 작업이 가능하며, UI가 마크다운이어서 가독성이 좋고 편집하기도 좋았으며 액셀만큼은 아니지만 표와 데이터베이스 같이 데이터를 관리하기에 편리하다는 장점들이 있어서였습니다...
다대다(Many-to-Many)를 접하는 사람이라면 한 번쯤 접해보셨을 문제가 있으실 겁니다. 하나의 엔티티에 `@Id`를 2개 이상 어노테이션 적용을 못하는 문제를요.. 저 또한 프로젝트 진행 중에 다대다 클래스에서 Id에 대한 문제가 발생한 경우가 있어 이슈 트러블슈팅을 한 경험을 공유하고자 포스팅을 남깁니다. 다대다(Many to Many) 다대다는 이 글을 읽고 읽는 여러분들도 알고계시다시피 테이블과 테이블 간에 여러 개의 관계가 서로 맺어질 때 사용하는 관계입니다. (예: 상품-쿠폰, 학생-수업 등) 이 다대다 관계를 맺기 위해 스프링 프레임워크에서는 `@Entity`라는 어노테이션을 사용하여 테이블을 생성하고, 그 테이블 안에서 `@ManyToMany` 어노테이션을 사용하여 다른 테이블과 외래..
부트캠프에서 배웠던 내용 중에 새롭게 프로젝트를 세팅할 때 docker-compose 를 사용해서 데이터베이스 구성을 설정하는 방법을 알게되었습니다. 덕분에 올해 개발했던 스프링 프로젝트들에 docker-compose를 통해 데이터베이스 환경을 쉽고 편하게 관리하고 개발할 수 있었습니다. 이번 포스팅에서는 docker-compose로 mysql과 redis 데이터베이스 환경을 구성하여 로컬 개발 시 부담을 덜 수 있는 좋은 방법을 소개해드리려 합니다. 😄 잠깐! docker-compose가 뭐지? 방법을 소개드리기 전에 간단하게 docker-compose에 대해 간략하게 설명해드리겠습니다. (공식 문서 링크에서도 참고해보실 수 있습니다.) docker-compose는 하나의 프로젝트에서 사용하는 여러 d..
서론 요즘 부트캠프의 프로젝트를 진행한다고 정신이 없습니다... 그래서 블로그를 작성하던 습관도 다 없어지고, 진행하고 있었던 개인 사이드 프로젝트도 주춤했죠. 하지만 부트캠프의 프로젝트를 진행하면서 얻었던 것이 정말정말 많았습니다. 12월이 되면서, 개발 스터디에 대한 마음을 다잡을 겸해서 얻었던 것들을 이제라도 하나하나씩 써 나가볼 예정입니다. 내용 본 글은 CORS에 대한 지식을 어느정도 알고 계신다는 하에 작성되었습니다. CORS 설정에 앞서서, 두 가지를 설명드리고자 합니다. 첫번째는 Spring Web에서의 CORS 설정이고, 두번째는 Spring Security에서의 CORS 설정입니다. 본 글을 보시는 분들은 알고 계시다시피 Spring Web과 Spring Security는 큰 Sprin..
요새 다니고 있는 부트캠프에서 사이드 프로젝트를 진행하고 있습니다. 게시판을 Spring boot를 활용해서 만들고 있는데, Thymeleaf를 처음 사용하다 보니 아래 문제가 발생했습니다. 문제 글을 수정하기 위해 기존 글을 form에 불러올 때, 기존 글이 form의 input의 값에 넣어지지 않는 문제가 발생했습니다. 아래 보드를 수정하는 메소드(`editBoard`)로 예시를 들어보겠습니다. // Controller.java @PostMapping("/board/edit/{board_id}") public String editBoard( @PathVariable(name="board_id") Integer boardId, @ModelAttribute("board") EditBoardDTO edit..
이전에 nodejs를 사용해서 개발할 때는, 개발 서버가 실행될 때 자동으로 웹 브라우저가 실행되어서 참 편했습니다. 하지만 스프링에서는 그런 기능이 기본으로 있지 않아, 개발할 때 항상 웹 브라우저를 수동으로 켜서 실행해야 했습니다. 이 때문에 구글링과 chatGPT의 도움을 통해 임시로나마 다음 코드를 통해 해결할 수 있었습니다. package com.example.exampleapp; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframewo..
백준이나 프로그래머스에서 문제풀이를 하는데 계속 같은 환경에서 새로운 문제를 풀 때마다 `Main` 클래스 초기화를 반복해서 하자니 템플릿과 매크로가 필요했습니다. 그래서 gradle 명령어로 Main 클래스의 템플릿을 초기화하고, 파일입출력을 받되 파일 경로가 코드에 노출되지 않는 스크립트를 만들었습니다. Main클래스 템플릿 + 초기화 스크립트 준비할 파일들은 다음과 같은 구성으로 되어있습니다. 참고로, 위 디렉터리들 중 `build`, `solve` 는 이 포스트와 관련이 없습니다. `solve` 에는 풀었던 문제들을 따로 저장했습니다. 파일 이름에서 눈치챘을 수 있었을 것입니다. `BOJ.java`는 백준 풀이용 템플릿이고, `Programmers.java`는 프로그래머스용 템플릿입니다. 우선 `..
· Develop/Git
파일이 처음에 존재는 하는데, 계속 업데이트는 하지 않아야 하는.. 그런 파일이 있습니다. 깃허브에 코딩테스트 문제를 푸는 환경을 올릴 때, input.txt나 output.txt같은 텍스트 파일, Main.java 같이 문제를 풀 때 계속 내용이 바뀌고, 바뀐 내용을 저장할 필요가 없는 이런 파일들이 있습니다. 그 때 사용하는 것이 아래 명령어입니다. git update-index --assume-unchanged 위 에 더 이상 버전관리에 추적되지 않을 파일 이름을 적어주면 앞으로 add할 목록에 더이상 나오지 않습니다.
인텔리제이(intellij)를 사용하는데 위와 같이 x-windows-949 관련 배너가 나오면서 위와 같이 한글이 깨지는 현상이 발생했습니다. 1. 환경설정에서 UTF-8 인코딩으로 다 바꾸어주기 일단 이 문제는 인코딩 문제인 것은 확실하기 때문에 환경설정에서 x-windows-949 으로 보이는 부분은 모두 UTF-8로 바꾸어주었습니다. 일단 위 스크린샷에서는 두 부분을 변경해주면 됩니다. Project Encoding 부분과 아래 default encoding for properties files 부분을 UTF-8로 바꾸어줍시다. Editor-General-Console 에 있는 Default Encoding 부분도 UTF-8로 바꾸어줍시다. 이렇게 위 스크린샷들처럼 바꾸면 우선 파일과 콘솔 관련 ..
라페dev
'Develop' 카테고리의 글 목록