Spring

· Spring
개요클릭 미! 프로젝트를 진행하면서 웹 소켓을 통한 양방향 통신이 필요했고 이를 사용하기 위해 학습했다!본론해당 포스트에서는 스프링에서 WebSocket, STOMP(Stream Text Oriented Messaging Protocol)의 사용 방법을 기재한다.build.gradleimplementation 'org.springframework.boot:spring-boot-starter-web'implementation 'org.springframework.boot:spring-boot-starter-websocket'Spring Web과 WebSocket을 추가해준다!먼저 나는 웹 소켓에 STOMP를 사용하여 규격이 있는 메시지를 송수신하도록 했다.WebSocket웹 소켓 등록은 다음과 같이 해준다..
· Spring
개요프로젝트를 진행하던 중 게시글의 요청이 연속으로 두 번 오면 게시글이 2개 작성되서 이전에 만들어둔 로직과 충돌하는 일이 발생했다.기존의 로직은 현재 진행중인 게시글이 있다면 더이상 게시글이 작성되지 않도록 했지만 연속으로 들어오는 요청을 방지할 방안이 없었다.즉, 2개의 요청이 들어왔을 때, 진행중인 게시글의 존재 여부를 체크를 2개의 요청이 모두 넘어가면 2개의 게시글 모두 작성된다는 문제가 발생한다.문제의 코드@Override public WantedResponseDTO createWanted(WantedDTO wantedDTO, MultipartFile mainImage, MultipartFile signature) throws IOException { UserEntity u..
· Spring
개요프로젝트를 진행하던 도중 실수로 유저가 동시에 버튼을 두 번 연속으로 누를 경우에 회원가입이 두번 발생하는 현상이 있다는 것을 알게되었다.이런 문제를 해결하는 방법을 찾아보던 중 동시성 제어를 해서 두 개의 스레드가 동시에 임계 구역으로 진행하지 못하도록 세마포 역할을 하는 무언가가 있어야한다는 것을 알게되었고 해당 내용을 테스트 해보았습니다.자바의 동시성 제어여러 스레드가 하나의 자원을 공유해서 레이스 컨디션이 발생하는 것을 방지해야 합니다. 자바에서는 synchronized 키워드를 통해서 메서드에 대한 동시성을 제어할 수 있었습니다.📌 synchronized 키워드 Essential Java Classes > Concurrency)" data-og-descri..
· Spring
개요 QueryDSL을 통해서 JPQL을 동적으로 구성할 수 있는 법을 공부하고 Spring Boot에 적용하는 방법을 찾아보고 적용시킨 방법을 기록한다. QueryDSL은 JPA에서 공식적으로 제공하는 JPQL 빌더가 아니기 때문에 따로 구성해주어야 한다. 적용시킨 Spring Boot 버전과 의존성들은 다음과 같다. version : 3.2.4 java version : 17 Spring Data JPA lombok MariaDB Driver Spring MVC 환경이 다르면 문제가 발생할 수 있다는 점, 안된다면 댓글을 남겨주세요 본론 Gradle에 QueryDSL 의존성 추가 // query dsl 버전 명시해야 jakarta사용 (javax X) implementation 'com.queryds..
· Spring
개요 프로젝트를 진행하면서 application.yml 파일에 입력되는 여러 민감정보(oauth token, database url, username, password 등..)이 github에 노출되는 것이 마음 한켠으로 불편했다. 그래서 docker container를 실행할 때 .env 파일을 통해 값들을 주입시켜주는 방법과 로컬 환경에서도 .env 파일을 통해 관리할 수 있는 방법을 소개하겠다. 본론 📌 .env 파일 만들기 확장자명 .env 파일을 먼저 만들어서 환경변수로 사용해야 한다. {환경변수명}={값} 위와 같이 간단한 형태로 작성해주면 된다. 아래는 예시이다. MY_DATA_SOURCE=jdbc:mariadb://127.0.0.1:3306/capstoneAuth MY_DATA_USERNA..
· Spring
서론 지난 포스트에 이어 스프링 프로젝트에서 리액트-스프링 부트간의 REST API를 통한 카카오 로그인과 카카오 회원가입 구현에 대해 소개하겠다. 본론 카카오 회원가입 카카오 서버로부터 정보를 받아와서 서비스에 정보를 등록해두고 회원가입 처리를 해준다. 프론트에서 인가 코드를 받아 서버로 전달 프론트 과정 설명으로 다루겠다. 프론트엔드에서 인가 코드를 발급받고 redirect uri로 리다이렉트되었을 때, 쿼리 파라미터에 담긴 code를 서버로 전달해주어야 한다. 위의 api를 통해 인가 코드를 발급받는다. 위의 3가지 쿼리 파라미터를 작성하고 GET 요청을 보내면 카카오 로그인 화면이 나타나고 로그인을 완료하면 설정한 redirect uri로 리다이렉트된다. redirect uri는 내 애플리케이션 ..
· Spring
개요 프로젝트를 진행하면서 소셜 로그인을 통해서 간편 로그인을 만들었다. 이번 포스팅에서 카카오 로그인을 React - Spring Boot간의 REST API로 구현하는 방법에 대해서 소개하겠다. 본론 카카오 developers에 정보 등록하기 먼저 카카오 developers에 가입해서 현재 프로젝트 애플리케이션을 등록해주어야한다. Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다. developers.kakao.com 카카오 developer에 로그인해준 후 내 애플리케이션으로 들어간다. 그 후 애플리케이션 추가하기 버튼을 눌러 애플리케이션에 대한 정보들을 기입해준다. 이때 기입한 ..
· Spring
개요 intellij에서 javadoc으로 문서를 만들어주는 기능이 있다는 것을 발견해서 프로젝트를 javadoc으로 만들어보았다!. 본론 기본적인 개념 javadoc 주석을 달아놓은 메서드와 클래스들을 문서로 자동으로 만들어준다. /** * 유저의 이메일이 데이터베이스에 존재하는지 체크 * @param email 체크하려는 이메일 * @return true 존재하는 이메일, false 존재하지 않는 이메일 * */ private void emailDuplicateCheck(String email){ if(userDAO.existUserByEmail(email)){ throw new EmailDuplicateException(); } } 위와 같이 /** 내용 */ 형태로 작성한 주석을 javadoc이라..
창e
'Spring' 카테고리의 글 목록