전체 글 보기

[ 기타 ]/Trouble Shooting

[트러블슈팅/docker/mongodb] mongo: not found 에러 / docker에 mongodb 이미지 띄우고 실행하기

Docker를 사용하여 MongoDB 사용해 보기 현재 진행 중인 프로젝트에서 일대일 DM 기능과 단체톡을 구현해야 하는데, RDBMS를 사용해도 되지만, NoSQL을 사용해 보자는 의견이 나와서 MongoDB를 사용해보려고 했다. MongoDB를 docker-compose.yml 파일을 이용해 docker에 자동으로 띄우고 사용해보려고 했는데, 그 과정에서 매우 많은 시행착오를 겪었다. 그 이유는.. mongoDB 버전이 최신화되며 명령어가 일부 변경되었기 때문이었다. 그 과정을 기록하고자 이 글을 쓴다. 문제점을 바로 보시려면 "mongo: not found" , "해결법" 부분을 봐주세요! docker-compose.yml 아래와 같이 docker-compose 파일에 mongodb 관련 내용을 추..

[ 기타 ]/Trouble Shooting

[JPA, Test, Mockito] repository.save() test 시 오류 발생 org.mockito.exceptions.misusing.PotentialStubbingProblem 문제 해결

문제 상황 JPA repository를 사용하는데, 처음으로 repository에 save() 하는 로직에서 아래와 같은 문제가 발생했다. 말 그대로 어떤 엔티티를 추가하려는 요청(request)을 받고, 그 request 객체를 entity 객체로 변환하여 처음으로 jpaRepository에 save(entity)를 하는 부분이다. 서비스 메서드 전체 @Override @Transactional public RecruitDto registerRecruit(Request request, Long memberId) { MemberEntity memberEntity = memberRepository.findById(memberId) .orElseThrow(() -> new MemberException(Err..

Spring

[Spring security] JWT 토큰이란?

JWT이란? JWT는 Json Web Token의 약자로, 웹에서 사용되는 JSON 형식의 토큰에 대한 웹 표준 규격이다. 주로 사용자의 인증, 인가 정보를 서버와 클라이언트 간에 안전하게 주고받기 위해 사용된다. JWT의 특징 웹 표준을 따르고 있다. URL-safe 하다. (URL에서 사용할 수 있는 문자로만 이루어져 있다.) 필요한 모든 정보를 하나의 객체에 담아서 전달하기 때문에 JWT 하나로 인증을 마칠 수 있다 JWT 구조 JWT 토큰은 헤더(header)와 페이로드(payload), 서명(signature) 세 부분으로 나누어지고, 각 부분이 ' . '으로 구분된다. 헤더(header) 토큰의 유형과 서명 알고리즘이 명시된다. { "alg" : "HS256", "typ" : "JWT" } 페..

[ 기타 ]/개인 프로젝트

[Java/Spring] 백엔드 개발 프로젝트 명세서 (Fitness Record)

Github https://github.com/HSRyuuu/FitnessRecord 1. 개요 프로젝트 명: FitnessRecord 개발 기간: 2023.10.18 ~ 2023.11.18 개발 인원: 1명 주요 기능: 운동(웨이트 트레이닝) 기록, 루틴 공유 커뮤니티 서비스 2. Skills Java 11, Spring Boot 2.7.16, gradle 8.2.1 Spring Data JPA, Spring Security MariaDB, Redis JUnit5 IntelliJ Idea 기타 사용 기술 상세 JWT redisson (분산 락, JWT Token 관리) google GSON Gmail smtp 메일 발송 Swagger 3. 요구 사항 1) 인증, 인가 Spring security 이용 ..

Spring

[Redis] Redisson 분산락(DistributedLock) AOP 적용

이전 글2023.11.07 - [Database] - [Redis] Redisson 분산 락을 간단하게 적용해 보기  분산 락 AOP 이용하기build.gradle아래 implementation을 추가한다.dependencies {//... implementation 'org.springframework.boot:spring-boot-starter-aop' implementation 'org.redisson:redisson-spring-boot-starter:3.17.0'}@DistributedLock@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface DistributedLock { /** * 락의..

Spring

[Redis] Redisson 분산 락을 간단하게 적용해보기

문제 상황 어떤 데이터에 대해 매우 빠르게 수정이 일어날 때 동시성 문제가 발생할 수 있다. 예를 들어 A라는 데이터를 수정하는 로직이 0.1초 소요되는데, 0.001초 간격으로 A라는 데이터를 수정하는 요청이 여러 번 들어왔을 때 값이 제대로 수정되지 않을 수 있다. 이럴 때, DB 데이터 수정의 순차적 처리를 보장하기 위한 방법으로 Lock이 있다. Lock 트랜잭션 락과 비슷한 개념으로 어떤 데이터 수정, 접근 등에 Lock을 필요로 하게 설정하는 것이다. 데이터를 수정하려면 우선 Lock을 획득하고 수정 후에 Lock을 반납한다. 만약 Lock을 획득할 수 없는 상황에서는 Lock을 획득할 수 있을 때까지 대기하거나 수정을 취소할 수 있다. 분산 락(Distributed Lock) 하나의 공유 자..

Database

[Redis] 레디스 설치 및 기본 기능

Redis 설치 https://redis.io/docs/install/install-redis/install-redis-on-linux/ Install Redis on Linux How to install Redis on Linux redis.io 위의 Redis 공식 사이트에서 설치할 수 있다. Window의 경우 ubuntu 리눅스 서버 설치 후에 사용하는 것을 추천한다. Redis 실행 redis 실행 명령어 ~$ redis-server 위와 같이 6379 port로 redis가 실행된다. Redis client redis client 실행 명령어 ~$ redis-cli 기본 명령어 SET (key) (value) hello - world의 key value 쌍을 생성한다, GET (key) hel..

[ 기타 ]/Trouble Shooting

[오류 해결] Spring boot - Swagger, Redisson 적용 시 버전 conflict 문제 "Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException"

오류 발생 Redisson을 처음으로 사용해 보려고 설정을 완료하고 일단 한번 빌드하고 실행해 봤는데, org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException 이런 예외가 터지면서 실행이 중단되었다. swagger build.gradle 일단 이 문제가 발생한 프로젝트의 swagger implementation문이다. //swagger implementation 'io.springfox:springfox-boot-starter:3.0.0' implementation '..

HSRyuuu
'분류 전체보기' 카테고리의 글 목록 (11 Page)