분류 전체보기 (131) 썸네일형 리스트형 [프로젝트] 좋아하면숭리는 - 취미 기반 주변사람 소개팅 어플리케이션 1. 개요주변 사람의 권유로 짧게 축제때 쓸 소개팅 어플리케이션의 서버 개발자로 참여하게 되었다. 바쁜 일정으로 인해 안하려고 했으나 저번에 한 프로젝트에서 채팅을 개발해본 경험이 있으므로 손쉽게 구현할 줄 알았다.(왜 이런 생각을 가졌을까...)'좋아하면숭리는'은 주변에 있는 사람과 취향을 기반으로 매칭이 일어나는 소개팅 어플리케이션으로, 나는 여기서 채팅 API를 도맡아서 개발했다. 2. 일정2025.09.07 ~ 2025.09.25, 총 3주정도 진행된 프로젝트이다. 매우 짧은 기간내에 개발이 이뤄져야 했고, 결제도 붙는 서비스다 보니 구현을 대충할 수도 없던 프로젝트이다. 3. 팀 구성- 기획 1명- 디자인 1명- 프론트엔드 2명- 백엔드 3명- 법률 1명- 마케팅 1명 4. 기술 스택La.. [Spring Boot] 커스텀 프로퍼티 완벽 가이드 개요Spring Boot 개발을 하다 보면 하드코딩된 값들로 인해 고민을 하게 된다."이 설정값을 바꾸려면 또 코드를 수정하고 배포해야 하나?" 라는 생각이 들 때가 종종 생긴다. 이런 문제를 해결해주는 것이 바로 커스텀 프로퍼티이다.이 글에서 커스텀 프로퍼티가 무엇인지, 어떻게 사용하는지, 그리고 언제 사용해야 하는지에 대해 자세히 알아보자. 1. 커스텀 프로퍼티란?커스텀 프로퍼티는 애플리케이션에서 필요한 설정값들을 application.properties 또는 application.yml 파일에 정의하고, 이를 Java 코드에서 사용할 수 있도록 하는 Spring Boot의 기능이다. 간단한 예시로 시작해보자:# application.propertiesspring.application.name=d.. [프로젝트] Cockple - 배드민턴 모임 플랫폼 1. 개요프로젝트 동아리 UMC에서 2025.03 ~ 2025.08까지 스프링부트 챌린저로 활동을 진행했다. UMC는 방학기간동안 사람들을 모아 프로젝트를 진행하는데, '콕플'이라는 프로젝트에서 서버 개발자로 참여했다. 콕플은 지역, 급수, 일정 등 조건에 맞는 배드민턴 모임을 쉽고 간편하게 찾고 참여 및 모임 운영할 수 있는 전용 플랫폼이고, 나는 여기서 운동 API 및 채팅 API를 도맡아서 개발했다. 2. 일정2025.06.24 ~ 2025.08.22, 총 2달간 진행된 프로젝트이다. 개발 기간은 다음과 같지만, 기획 및 디자인은 1달 전부터 진행되었다. 3. 팀 구성- 기획 1명- 디자인 1명- 프론트엔드 4명- 백엔드 4명 4. 기술 스택Language & FrameworkJava 1.. [Spring] Spring 캐시(Cache) 핵심정리 개요채팅 시스템을 프로젝트에서 구현하면서 Redis를 프로젝트에 도입하게 되었다.Redis는 채팅방 구독 정보를 관리하기 위해 도입했지만, 캐싱도 가능하다고 글을 읽은 적이 있다. 캐싱을 적용한 곳은 채팅방 목록에서 마지막 메시지 조회 로직이었고,직렬화, 역직렬화 문제로 나름 애를 먹었지만 잘 도입할 수 있었다! 1. 캐시 어노테이션 3종 세트@Cacheable - 조회 시 캐싱@Cacheable(value = "userCache", key = "#userId")public User getUser(Long userId) { return userRepository.findById(userId); // 첫 번째만 실행, 이후 캐시 반환} @CachePut - 업데이트하면서 캐시 동기화@CachePut.. [Trouble Shooting] Redis에서 DTO로 역직렬화 문제 발생 문제Redis를 활용해 캐싱을 도전하던 중 다음과 같은 에러가 발생했다. 2025-08-21T14:45:41.579+09:00 ERROR 16688 --- [cockple.demo] [0.0-8080-exec-8] u.c.d.g.e.GlobalExceptionHandler : Unexpected exception: uri=/api/chats/parties, type=ClassCastException, message=class java.util.LinkedHashMap cannot be cast to class umc.cockple.demo.domain.chat.dto.ChatRoomListCacheDTO$LastMessageCache (java.util.LinkedHashMap is in module j.. [Trouble Shooting] Redis에서 Java 8 LocalDateTime 직렬화 문제 문제 채팅방 목록에서 마지막 메시지 업데이트 로직을 짜던 중. 관련 내용을 캐싱하면 좋겠다는 생각이 들었다.마침 구독 목록 관리를 위해 Redis를 도입했기에 캐싱을 시도하던 중 직렬화 문제가 발생했다. 2025-08-21T00:27:33.264Z ERROR 1 --- [cockple.demo] [.0-8080-exec-10] u.c.d.g.e.GlobalExceptionHandler : Unexpected exception: uri=/api/chats/direct, type=SerializationException, message=Could not write JSON: Java 8 date/time type `java.time.LocalDateTime` not supported by de.. [해커톤] 교내 연합 해커톤(UNITHON) 후기 개요정신없던 학기가 끝나갈 무렵 상금이 큰 해커톤이 열린다는 걸 알게 되었다.같이 학교를 다니던 사람들과 함께 팀을 해서 기존 프로젝트를 내면 되겠다 싶어 호기롭게 지원했다. 하지만.. 이 해커톤은 기획자 2명과 개발자 3명이 매칭되어 하는 프로젝트였고,계획은 산산조각이 되었다. 기존에 하던 프로젝트도 있었기에 정신이 없어 더욱더 부담스러웠던 해커톤이번 해커톤은 다른 해커톤들과 달리 목금 - 월화수 로 진행되어 주말 포함 7일의 기간이 주어졌다. 기획 2명, 웹 1명, 서버 2명이 팀이 되어 해커톤을 진행했다. 아이템우리나라에 경매 플랫폼을 만들어보자! 라는 아이디어였다. 기간 안에 무조건 팔아준다는 걸 핵심으로 해서 내세워서 개발을 진행했다. 이번 해커톤을 통해 배운점1. 해커톤은 배움이 아닌.. [Spring Boot] 환경별 설정 어떻게 해야할까? 개요 저번 팀 프로젝트에서는 application.properties에 spring.profile.include=secret을 적고,github에 공유하지 않는 application-secret.properties를 통해 비밀값들을 관리했었다.그리고 배포 과정에서 Github Secrets를 사용해 그 값들을 암호화했다. 그런데 실전 스프링부트 책을 읽으며 이런 방식말고도 환경 변수를 이용하는 방법과local(로컬), dev(개발), prod(운영)별로 세팅을 다르게 하는 방법을 알 수 있었다. 환경 변수로 비밀을 관리하는 건 어렵지 않으니환경별 세팅하는 방법에 대해 자세히 알아보자!! 1. Profile을 통해 환경별 설정하기먼저 Profile을 통해 환경별로 설정하는 걸 배워보자. Profile 방.. 이전 1 2 3 4 ··· 17 다음