본문 바로가기

Spring

스프링 부트와 Jackson: HttpMessageConverter 완벽 정복 가이드 목차HttpMessageConverter의 정체와 역할주인공의 등장: MappingJackson2HttpMessageConverter스프링 부트의 자동 설정 마법: JacksonAutoConfigurationObjectMapper 커스터마이징: 전역 설정 마스터하기어노테이션을 이용한 정밀 제어: 로컬 설정고급 주제 및 트러블슈팅1. HttpMessageConverter의 정체와 역할Spring MVC는 클라이언트와 서버 간의 통신을 매우 유연하게 처리합니다. 클라이언트는 XML을 원할 수도, JSON을 원할 수도, 혹은 단순 텍스트를 원할 수도 있습니다. 서버는 이러한 다양한 요구에 맞춰 자바 객체를 특정 데이터 포맷으로 변환하거나, 그 반대의 작업을 수행해야 합니다.이때 등장하는 것이 바로 HttpMe.. 더보기
Embabel: Java를 위한 AI 에이전트 프레임워크 Embabel: Java를 위한 AI 에이전트 프레임워크1. 소개 (Introduction)AI 기술이 발전하면서, 단순한 모델 호출을 넘어 자율적으로 작업을 수행하는 AI 에이전트(Agent)를 구축하려는 요구가 커지고 있다. Embabel은 Java 생태계에서 이러한 AI 에이전트 개발을 간소화하고 구조화하기 위해 설계된 오픈소스 프레임워크다.Spring AI가 다양한 LLM(거대 언어 모델)과의 '연결'에 초점을 맞춘다면, Embabel은 한 단계 더 나아가 상태(state), 컨텍스트(context), 목표(goal)를 가진 지능형 에이전트를 만들기 위한 종합적인 프레임워크를 제공한다.이 글에서는 Embabel의 핵심 개념과 어떻게 이를 사용하여 강력한 AI 에이전트를 구축할 수 있는지 알아본다... 더보기
Jimmer ORM 소개 Jimmer ORM 소개 원문은 밸둥: Introduction to Jimmer ORM | Baeldung 1. 소개 (Introduction)Jimmer는 Java와 Kotlin을 위한 혁신적인 ORM(Object-Relational Mapping) 프레임워크다. 이 프레임워크는 기존의 ORM들이 가진 여러 문제점, 특히 동적 쿼리와 성능 오버헤드를 해결하는 데 중점을 두고 설계되었다.Jimmer의 가장 큰 특징은 정적 타입 언어의 장점과 동적 쿼리의 유연성을 결합했다는 점이다. 이를 통해 개발자는 컴파일 시점에 타입 안정성을 보장받으면서도, 런타임에는 필요한 데이터만 정확히 조회하는 동적 쿼리를 손쉽게 작성할 수 있다.이 글에서는 Jimmer의 핵심 개념과 기존 ORM과의 차이점을 알아본다. Jimm.. 더보기
Hibernate Spatial Hibernate Spatial 원본 URL: https://www.baeldung.com/hibernate-spatial 1. 개요 (Overview)이 튜토리얼에서는 Hibernate Spatial에 대해 알아본다. 이 라이브러리는 지리 공간 데이터(geographic spatial data)를 다루기 위한 Hibernate ORM의 확장 기능이다.먼저, Hibernate Spatial의 기능과 설정 방법을 살펴본다. 그런 다음, 데이터베이스에 위치 정보를 저장하고 공간 쿼리(spatial query)를 실행하는 간단한 예제를 만들어 본다. 2. Hibernate Spatial이란 무엇인가? (What Is Hibernate Spatial?)Hibernate Spatial은 표준화된 방식으로 지리 공.. 더보기
Spring gRPC 프로젝트 가이드 Spring gRPC 프로젝트 가이드원본 : A Guide to Spring gRPC Project1. IntroductiongRPC(Google Remote Procedure Call)는 구글이 개발한 고성능 오픈소스 RPC(원격 프로시저 호출) 프레임워크이다. 어떤 환경에서든 실행할 수 있으며, 클라이언트와 서버 애플리케이션이 투명하게 통신하고 분산 시스템과 서비스를 쉽게 구축할 수 있도록 지원한다.gRPC는 HTTP/2를 전송 프로토콜로 사용하고, 프로то콜 버퍼(Protocol Buffers)를 인터페이스 정의 언어(IDL)로 사용하여 직렬화(serialization)를 수행한다. 이는 기존의 JSON 기반 REST API에 비해 더 높은 성능과 효율성을 제공한다.이 아티클에서는 Spring Bo.. 더보기
Langchain4j와 MongoDB Atlas를 사용하여 Java로 AI 챗봇 구축 1. Introduction최근 몇 년간, 대규모 언어 모델(LLM)을 활용하여 사용자의 질문에 답변하는 AI 챗봇의 인기가 급증했다. 이 튜토리얼에서는 Langchain4j와 MongoDB Atlas를 사용하여 AI 챗봇 웹 애플리케이션을 구축하는 방법을 알아본다.우리의 애플리케이션은 챗봇과 HTTP 엔드포인트를 통해 상호작용하며, 두 가지 주요 흐름을 가진다: 문서 로딩 흐름과 챗봇 흐름이다.이러한 시스템의 전체 아키텍처는 검색 증강 생성(Retrieval-Augmented Generation, RAG) 모델을 기반으로 한다. RAG는 LLM을 외부 지식 베이스와 연결하여 그 능력을 보강하는 기술이다.다음은 RAG 시스템의 일반적인 흐름을 도식화한 것이다.[사용자 질문] -> [질문을 벡터로 변환 (.. 더보기
Spring Data JPA Repository 에서 Stored 프로시저 호출 1. Overview저장 프로시저(Stored Procedure)는 데이터베이스에 미리 정의된 SQL 문들의 집합이다. 자바에서는 저장 프로시저에 접근하는 여러 방법이 있다. 이 아티클에서는 Spring Data JPA Repository를 통해 저장 프로시저를 호출하는 방법에 대해 학습한다.2. Project Setup먼저, 데이터 접근 계층으로 Spring Boot Starter Data JPA 모듈을 사용할 것이다. 또한, 데이터베이스로는 MySQL을 사용한다.프로젝트 설정을 위해 필요한 Gradle 의존성은 다음과 같다.dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeO.. 더보기
MapStruct를 활용한 효율적인 중첩 객체 매핑 전략 MapStruct를 활용한 효율적인 중첩 객체 매핑 전략: 원본 포스팅 =>How to Do Nested Mapping in Mapstruct?1. 서론1.1. MapStruct 소개 및 필요성MapStruct는 Java 빈(Bean) 타입 간의 매핑 구현을 대폭 단순화하는 코드 생성기이다. 개발자가 매핑 규칙을 정의하는 인터페이스를 작성하면, MapStruct는 컴파일 시점에 해당 인터페이스의 구현체를 자동으로 생성해준다.1 이러한 접근 방식은 특히 다계층(multi-layered) 애플리케이션에서 데이터베이스 엔티티(Entity)와 외부로 전달되는 데이터 전송 객체(DTO) 간의 변환처럼, 반복적이고 오류 발생 가능성이 높은 상용구 코드(boilerplate code) 작성을 현저히 줄여준다.수동으로.. 더보기
Spring 퍼포먼스 로깅 0. 들어가며내가 자주 참고 하는 Baldung( https://www.baeldung.com/spring-performance-logging ) 사이트에 스프링 퍼포먼스 로깅이라는 포스팅이 올라와서 내 프로젝트에 도입하기 위해 분석하고 이를 포스팅으로 작성했다. 단순 번역 뿐만 아니라 필요한 내용까지 작성해 보았다.1. Spring 애플리케이션의 성능 로깅 소개1.1 성능 모니터링의 중요성현대 애플리케이션 개발에서 성능 모니터링은 매우 중요한 위치를 차지합니다. 애플리케이션의 병목 지점을 식별하고, 최적의 사용자 경험을 보장하며, 자원 관리를 효율화하고, 잠재적 문제를 사전에 감지하는 데 핵심적인 역할을 합니다. 성능 문제는 사용자 이탈률 증가, 운영 비용 상승 등 비즈니스 목표에 직접적인 영향을 미칠.. 더보기
Ollama/Llama3/Langchain4j, RAG :유해 콘텐츠 필터링 시스템 구축 서비스를 위한 AI 기반 유해 콘텐츠 필터링 시스템 구축 방안: Ollama/Llama3 및 Langchain4j RAG 활용 내가 리딩중인 서비스에 적용해 보려고 작성한것이나, 다른 많은 개발자 들에게 도움이 되기를 바라는 마음으로 열심히 적어 보려고한다. 좋은 피드백을 주시면 더 좋은 포스팅으로 업데이트해 나가도록 하겠습니다. 1. 서론서비스와 AI 기반 유해 콘텐츠 필터링 기능 도입의 필요성내가리딩 중인 서비스는 지역 기반 소셜 네트워크로서, 사용자가 직접 정보를 찾지 않아도 주변의 중요한 정보나 소식을 자동으로 얻고, 지역 주민 간의 소통을 활성화하며, 로컬 비즈니스 생태계를 조성하여 지역 경제 활성화에 기여하는 가치를 추구한다. 이러한 서비스의 핵심 가치를 지키고 사용자 경험을 향상시키기 위해서.. 더보기
환영합니다! 데이터와 로직의 세계에 발을 들인 용감한 개발자님, 반갑습니다! 🔥이곳은 Spring Boot, MySQL, MariaDB, Elasticsearch, Kafka, 리액트, 리액트네이티브등의 정수를 탐구하고, 여러분의 코딩 여정에 강력한 부스터를 달아줄 비밀 기지입니다. 복잡한 문제에 대한 명쾌한 해답, 최신 기술 트렌드에 대한 깊이 있는 분석, 그리고 동료 개발자들과 함께 성장하는 즐거움이 기다리고 있습니다. 여러분의 잠재력을 폭발시키고, 웹개발자 마스터로 거듭나는 여정을 지금 바로 시작하세요!이곳의 모든 글이 당신의 빛나는 아이디어를 현실로 만드는 데 든든한 지원군이 될 것입니다. 자주 들러주시면 저도 동기부여로 좋은글들을 더 자주 올릴수 있을것 같습니다.자주 들러주세요~~ 😊 온닫이 ( ond.. 더보기