들어가며오늘은 SpringBoot 환경에서 RabbitMQ 를 사용해서 비동기 이벤트 처리를 해보겠습니다. 참고로 오늘은 이벤트 발행자 와 수신자 딱 두가지 기능을 구현해볼 예정입니다. 메시지를 보내는 발행자 : Producer(=issuer)메시지를 받는 수신자 : Recevier(=consumer) 위 두가지 기능 구현을 위주로 이야기를 해보겠습니다. 서론비동기 처리를 알아보기 전에 간단한 개념설명을 해보겠습니다. RabbitMQ 는 무엇일까요?AMQP 를 구현한 오픈소스 메세지 브로커 이다.위 라이브러리를 사용하는 이유는 비동기 작업이 필요할 때 즉 많은 작업이 요청되어 처리를 해야 할 때 사용합니다. ❓그럼 AMQP 는 무엇일까요Advanced Message Queueing Protocol의 ..
안녕하세요 🤚오늘은 Instant & LocalDateTime 차이에 대하여 알아보려고 합니다.위 내용을 다루기 전에 간단하게 자바8 전 후 에 다루던 날짜, 시간 API 가 어떻게 변했는지도 살짝 알아보려고 합니다. 서론 회사 프로젝트를 살펴보던 중 시간 관련 데이터들을 DB에 TimeStamp 로 데이터 타입이 지정되어 있었다.그리고 엔티티에서는 LocalDateTIme 이 아닌 Instant 로 설계가 되어 있었다. 기존에 내가 했던 프로젝트는 DB에서 LocalDateTime 을 사용했고, 엔티티에는 DateTIme&TimeStamp 으로 설계를 해왔기 때문에왜 그럴까? 라는 궁금증이 생겨 따로 정리를 해보고 포스팅하게 되었습니다. 위 내용을 설명하기 전에 간단하게 자바8 전 후 날짜,시간 A..
안녕하세요 오늘은 스프링 시큐리티 Config 설정 중에서 만난 오류에 대해서 알아보려고 합니다. csrf()' is deprecated since version 6.1 and marked for removal 위 오류는 Spring Security 에서 config 설정을 할 때 일어난 오류 입니다. 기존에 csrf 방어는 디폴트로 활성화가 되어 있지만, 공부를 하는 입장에서는 비활성화 상태로 하기 위해서코드를 작성하다가 오류가 생겼습니다. Deprecated 는 이제 과거 코드이고, 지원하지 않는다고 하여 Spring Security 문서를 보니 함수형으로 바꿔서 쓰라고 친절하게 예시 코드가 보여 주었습니다. 스프링6.0 이 출시되면서 스프링부트 또한 3.x 버전으로 업그레이드가 되었습니다.스프링6...
나는 올해 2월에 회사에 입사를한, 0년차 개발자이다. 여러 기업을 자기소개서 항목을 보다가 이런 몇가지 공통적인 질문이 있었다.(다는 아님, 제가 본 회사 중에서 여러 군데 이러한 질문이 있었음) ✅ 어떠한 개발자가 되고싶으신가요?✅ 개발자로써의 최종 목표가 있으신가요? 라는 질문을 봤을 때 생각보다 당황스러웠다. 이 질문에 뭐라고 답변을 해야할지 감이 잡히질 않았다. 현재 개발자가 되었고, 내가 원하는 기술 스택인 Java,SpringBoot, Jpa 를 사용하면서 개발자로 일을 하고 있으면서도이러한 질문에 대한 명확한 답변이 나오지 않아 살짝 나 자신이 한심해지는? 현자타임이 살짝 있었다. 과거로 돌아가서 내 개발자를 꿈꾸고서 처음 목표는 SI,SM 이 아닌 자체 서비스를 운영하는 회사에 입사하..
안녕하세요👋오늘은 제가 개발시 느꼈던 에러와 불편함에 대한 해결책을 이야기 해보려고 합니다. 해결 방법이 급하게 궁금하신분은 맨 아래에 해결 방법이 나와 있습니다ㅎㅎ ✅ 서론제 개발 환경은 Intellj, Java17, SpringBoot3.2, MySQL8.0 입니다 (참고 해주세요) 저는 항상 DB 툴을 통해서 미리 ERD 를 통해 DB 설계 후 , DB에 알맞게 Entity 를 구현하였습니다. 그리고 실무라고 생각하고 개발을 진행하였기에 application.yml 에서 JPA 설정은 spring: jpa: show-sql: true properties: format_sql: true dialect: org.hibernate.dialect.MySQL8Diale..
안녕하세요 👐오늘은 성능측정도구 JMH 에 대한 이야기를 해보려고 합니다. 서론제가 JMH 를 알게 된 계기는 자바에서 Stream 과 일반 for loop 에 대한 성능 측정을 해보고둘에 대한 차이를 알아보다가 자연스럽게 알게 되었습니다. JMH 라이브러리는 간단하고, 어노테이션 기반 방식을 지원하며, 안정적으로 자바 프로그램 또는 JVM 메모리를 사용하는모든 언어를 대상으로 벤치마크를 구현할 수 있습니다. 벤치마크라는 단어가 생소 했습니다. 맨처음엔 mysql workbench 랑 헷갈렸었죠..😅 벤치마크는 컴퓨터 시스템, 소프트웨어, 하드웨어, 디바이스 등으 성능을 측정하고 비교하기 위해 사용되는 표준화된 테스트 입니다.이 테스트는 일반적으로 속도,처리량,응답시간,성능 과 같은 측면을 측정..
안녕하세요🤚오늘은 Stream API 를 공부하며 궁금했던 내용에 대해서 이야기 해보려고 합니다. 서론요즘 모던 자바 인 액션 책에 푹 빠져있어, 매일 매일 책을 읽으며 새로운 지식들을 쌓아가고 있습니다.아직 응애 개발자인, 3개월차 개발자가 보기엔 어려운 내용이 많지만, 새로운 내용이 많아서 처음부터 시작하는 거 같은 신기한 기분을 느끼고 흥미로워서 재밌습니다. 스트림은 자바 8부터 새롭게 생긴 문법으로 기존의 자바 문법들 보다 더 좋을 것이라고 생각했습니다. 그래서 아직 사용이 자연스럽지 않음에도 연습할 필요성을 느껴서 책을 사서 공부를 하는 중입니다. 모던 자바 인 액션은 자바8 이후 새로운 문법에 대해서 이야기하는 책으로대표적으로 Lambda, Stream, Optional 등 새로운 문법들을 ..
안녕하세요✋오늘은 Redis 데이터 타입에 대하여 설명을 해보겠습니다. Redis 는 Key/Value 구조을 저장을 지원하는 NoSQL 데이터 베이스 입니다. Key는 Redis data에 접근할 수 있는 식별자이며Key 에는 binary, text를 사용할 수 있습니다. 하나의 Key 에는 최대 512MB 까지 저장할 수 있다. 이제 Redis 의 DataType 에 대하여 알아보겠습니다. 대표적으로 Key/Value(Data type) 에는 1) Strings2) Lists3) Sets4) Sorted sets5) Hashes6) Geospatial7) Bitmap Java 컬렉션 프레임 워크에도 비슷한 자료구조가 있습니다. 그리고 위에 있는 데이터 타입들은 자바 컬렉션 프레임워크랑 거의 유사하다고..