목록웹개발/SpringBoot (19)
주뇽's 저장소
내용:최근에 Spring Boot와 S3, Flutter를 사용하여 게시판 프로젝트를 진행하던 중, 게시글에 이미지를 함께 올리는 기능을 구현하면서 여러 가지 문제에 직면했다. 이 글에서는 해당 문제의 원인과 해결 방법에 대해 자세히 설명한다.문제 상황:Spring Boot와 JPA를 사용하여 게시판 프로젝트를 진행 중이었다.게시글에 이미지를 함께 업로드하는 기능을 구현하려고 했다.Postman을 사용하여 API를 테스트하던 중 Content-Type 'multipart/form-data'와 관련된 여러 오류가 발생했다.특히, Content-Type 'application/octet-stream' is not supported라는 오류가 반복적으로 발생했다.문제 원인:Spring Boot에서 multip..
AWS S3는 확장성, 내구성, 보안성을 제공하는 객체 스토리지 서비스이다. 이 글에서는 Spring Boot 애플리케이션에서 AWS S3를 사용하여 게시글에 이미지를 업로드하고 관리하는 방법에 대해 설명한다.AWS S3 버킷 생성AWS 관리 콘솔에서 S3 서비스로 이동한다.새 버킷을 생성하고 적절한 이름과 리전을 선택한다.버킷의 접근 권한을 설정하고, 필요한 경우 버전 관리 및 암호화 옵션을 구성한다.Spring Boot 프로젝트 설정build.gradle 파일에 S3 관련 의존성을 추가한다.dependencies { implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'} application.proper..
최근에 Spring Boot와 JPA를 사용하여 프로젝트를 진행하던 중, 유저의 총 좋아요 개수를 조회하는 과정에서 데이터 불일치 문제가 발생했다. 이 글에서는 해당 문제의 원인과 해결 방법에 대해 자세히 설명한다. 문제 상황:UserAccount 엔티티와 Post 엔티티가 일대다 관계로 매핑되어 있다.UserAccountRepository에서 @EntityGraph 어노테이션을 사용하여 posts 연관 관계를 함께 로드하는 findWithPostsByNickname 메서드를 정의했다.유저의 총 좋아요 개수를 조회할 때, findWithPostsByNickname 메서드를 사용하여 유저 정보와 게시글 목록을 함께 조회한다.로그를 확인해보니 이전에 조회한 유저의 닉네임이 계속 출력되는 문제가 발생했다.문제..
최근에 Spring Boot와 JPA를 사용하여 게시글 프로젝트를 진행하던 중, 유저가 받은 총 좋아요 개수를 조회하는 과정에서 LazyInitializationException이 발생하는 문제를 겪었다. 이 글에서는 해당 문제의 원인과 해결 방법에 대해 자세히 설명한다. 문제 상황: UserAccount 엔티티와 Post 엔티티가 일대다 관계로 매핑되어 있다UserAccount 엔티티에서 posts 필드가 지연 로딩(Lazy Loading)으로 설정되어 있다유저가 받은 총 좋아요 개수를 조회하기 위해 UserAccount의 getTotalLikeCount() 메서드에서 posts 컬렉션에 접근하려고 한다getTotalLikeCount() 메서드 내부에서 LazyInitializationException..
Spring Security는 웹 애플리케이션의 인증과 인가를 담당하는 강력한 프레임워크이다. 이번 글에서는 Spring Security에서 제공하는 @AuthenticationPrincipal 어노테이션을 사용하여 로그인한 사용자의 정보를 쉽게 가져오는 방법에 대해 알아보자. Authentication최근에 Spring Boot와 Spring Security를 사용하여 웹 애플리케이션을 개발하던 중, 로그인한 사용자의 정보를 컨트롤러에서 사용해야 하는 상황에 직면했다. 처음에는 Authentication 객체를 직접 주입받아 사용하는 방법을 시도했다.(게시글에 좋아요 기능 추가)@PostMapping("/like")public ResponseEntity likePost(@PathVariable Long..
[Spring Boot] 실시간 채팅 기능을 위한 WebSocket, SockJS, STOMP 실시간 채팅 기능은 현대 웹 애플리케이션에서 필수적인 요소 중 하나이다. 사용자가 실시간으로 정보를 교환할 수 있게 함으로써, 애플리케이션의 상호작용성과 사용자 경험을 크게 향상시킨다. 이 글에서는 Spring Boot 애플리케이션에 실시간 채팅 기능을 구현하기 위한 세 가지 주요 기술인 WebSocket, SockJS, STOMP에 대해 소개하고, 각각의 장단점 및 적합한 사용 사례를 탐구한다. WebSocket WebSocket 프로토콜은 실시간 양방향 통신을 가능하게 하는 웹 표준이다. 이는 서버와 클라이언트 간의 지속적인 연결을 유지하며, 데이터를 신속하게 교환할 수 있도록 설계되었다. WebSocket..

1. OPENAI GPT API 및 요청 및 응답 데이터 확인 준비물 : OpenAI API를 이용하기 위해서는 OpenAI에 신용카드를 등록해야 한다. 이후 자신의 API Key를 확인. API 레펀러스 페이지에서 초록색 API Keys 문구를 클릭하여 자신의 새로운 API Key를 생성하고 확인한다. 1-1 GPT 요청 형식 확인하기 curl https://api.openai.com/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -d '{ "model": "gpt-3.5-turbo", "messages": [ { "role": "user", "content": ..
스프링 시큐리티 필터 체인 설정 스프링 시큐리티(Spring Security)는 자바(Java) 기반의 애플리케이션을 위한 강력한 인증 및 접근 제어 프레임워크다. 스프링 프레임워크(Spring Framework)의 일부로, 웹 애플리케이션과 메소드 수준의 보안을 제공한다. 이는 애플리케이션의 보안을 강화하기 위해 맞춤화하고 확장할 수 있는 다양한 기능들을 포함하고 있다. 주요 특징 인증(Authentication): 사용자가 누구인지 확인하는 과정이다. 스프링 시큐리티는 다양한 인증 메커니즘을 지원하며, 이를 통해 사용자 이름과 비밀번호, 토큰 기반 인증, LDAP, OAuth 등 다양한 방식으로 인증을 수행할 수 있다. 권한 부여(Authorization): 인증된 사용자가 특정 자원에 접근하거나 특..