[Spring] Spring AOP의 동작원리, JDK Dynamic Proxy와 CGLIB
·
Backend/Spring
오늘은 Spring AOP에 대해서 공부해보겠습니다.1. 관점 지향 프로그래밍(AOP)1) 등장 배경, 횡단 관심사객체지향 프로그래밍(OOP)는 프로그램을 객체(Object)라는 기본단위로 나누고 이들의 상호작용을 바탕으로 프로그래밍 하는 방법입니다. 하지만 객체지향 방식만으로 프로그래밍을 하다보면 문제 상황이 발생합니다. 예를들어, 각 서비스 로직이 걸리는 시간을 로그로 출력한다고 가정해봅시다.// 서비스 마다 걸리는 시간을 로그로 표시한다고 가정try { ... business ...} finally { log.info("time = {}", watch.stop());} 수많은 서비스로직에 하나하나 이와같은 로그를 남긴다면 코드 양도 어마어마해질거고 반복된 작업을 계속해야 할 것입니다.로깅..
[Spring] Failed to load driver class org.mariadb.jdbc.Driver 에러
·
TroubleShooting
오늘도 일하면서 터진 문제입니다.언제나 처럼 제 포스팅은 적용 방법만 보시고, 어떤 상황에 적용할지는 고민을 좀 더 하셨으면 좋겠습니다.사용중인 기술은 다음과 같습니다.Java 21Spring Boot 3.2.1JPAGradleMariaDB문제 잘 작동하던 로컬 프로젝트가 갑자기 작동하지 않았습니다.설정이 바뀐것도 없었고 거의 동일한 설정의 운영서버도 제대로 돌아가고 있었습니다.콘솔에 뜨는 오류는 다음과 같았습니다. Failed to load driver class org.mariadb.jdbc.Driver이 문제의 핵심인 것 같았습니다.빌드나 실행 과정에서 MariaDB JDBC 드라이버를 찾지 못했다는 뜻이였습니다. 설정이 바뀐게 없어서 DB에 문제가 있나 확인했습니다.먼저 Docker 컨테이너를 확..
[WebSocket] Spring, React, Stomp로 실시간 채팅, 저장 구현하기
·
Backend/Spring
[Spring] 1 대 1 실시간 채팅 구현하기 - Stomp, MongoDB, Redis1. 배경 및 목표1) 배경사용자 간 빠른 소통을 위한 실시간 채팅의 필요성이 제시됐습니다.이전에 실시간 채팅을 구현해본 경험이 있습니다. [WebSocket] Spring, React, Stomp로 실시간 채팅, 저장 구현하5g-0.tistory.com 최근 실시간 채팅을 다시 작업했습니다. 이 글을 찾아 들어오신 분들에게 도움이 될 것이라는 생각이 들어 링크 올려놓겠습니다.팀원들과 프로젝트를 진행하였고 의미 있는 내용들을 포스팅 해보려고 합니다.프로젝트는 다음과 같이 진행되었습니다.Java 17Spring Boot 3.2.0JPAGradleReact저에게는 자그마한 꿈이 있었습니다. 바로 저장되는 실시간 채팅입..
[Spring] @RequestBody로 받은 데이터가 null 일때
·
TroubleShooting
현재 저는 팀원들과 프로젝트를 진행하고 있습니다. 프론트엔드 3명, 백엔드 3명으로 구성되어 있으며 저는 프론트엔드를 맡게되었습니다.프로젝트는 다음과 같이 진행중입니다.Java 17Spring Boot 3.2.0GradleReact문제 채팅방 생성 과정에서 @RequestBody로 데이터를 받아오는데 null값이 나오고 있었습니다.// 채팅방 생성 @PostMapping("/chatroom/create") @Operation(summary = "채팅방 생성", description = "userSeq를 통해 채팅방을 생성합니다.") public ResponseEntity create(@RequestBody ChatRoomRequestDto chatRoomRequestDto) { ..
[Spring] Field dao in (...) required a bean of type (...) that could not be found. 에러
·
TroubleShooting
현재 팀원들과 미니프로젝트를 진행중입니다. 프로젝트는 다음과 같이 진행중입니다.Java 17Spring Boot 3.2.0Gradle저와 같이 백엔드를 맡고 있는 팀원이 깃 커밋 후 에러가 생긴다고 연락을 해왔습니다.문제*************************** APPLICATION FAILED TO START ***************************Description: Field dao in com.ssaca.model.service.BoardServiceImpl required a bean of type 'com.ssaca.model.dao.BoardDao' that could not be found. The injection point has the following annotat..
[Spring] Swagger 에러(Unable to infer base url. 하얀화면), SpringDoc Swagger
·
TroubleShooting
Java1.8, SpringBoot 2.7.17, Maven으로 진행했던 프로젝트를 Spring Boot 3.2, Java 17, Gradle로 바꾸어 복습하고 있었습니다.Spring에 swagger를 추가하면서 발생한 에러입니다.Unable to infer base url. This is common when using dynamic servlet registration or when the API is behind an API Gateway. The base url is the root of where all the swagger resources are served. For e.g. if the api is available at http://example.org/api/v2/api-docs the..