spring

이전 글에서 Spring에서 제공하는 Filter에 대해 설명했었는데요, Spring Web을 사용하게 되면, 자연스렙게 FIlter를 거치게 됩니다. [SpringBoot] Spring FIiter안녕하세요, 이번에 알아볼 주제는 Spring의 Filter입니다. Spring에서는 WEB 요청을 위한 다양한 필터가 존재하는데요,이번 시간에는 Spring에서 기본적으로 제공 해 주는 필터 종류와 필터들이 어떻게iron-jin.tistory.com Spring Security를 사용할 때, 우리는 Security에서 제공하는 여러 Filter들이 동작한다는 사실을 알고 있습니다.하지만 이 필터들은 Spring Web에서 기본적으로 등록되는 Servlet Filter들과는 동작 방식도 다르고, 등록 시점도 ..
Spring을 통해 개발하다 보면, Web 요청이나 응답을 중간에 가로채고 가공하여 전달하는 Interceptor가 존재합니다.Spring AI에서도 AI 모델에 요청을 보내기 전/후로 작업을 진행하는 Interceptor와 비슷한 기능을 하는 Advisor가 존재하는데요, 오늘은 Advisor API에 대해 알아보려고 합니다. Advisor APIAdvisor APi는 AI 모델에 전달하기 전/후 중간에 요청 및 응답을 가로채어, payload를 가공하여 요청/응답을 가공하는 역할을 합니다.이는 Spring의 Web에서 제공하는 Interceptor와 비슷한데요, 사실 이 도메인을 Interceptor로 만들면 어땠을까 하는 생각을 가지고 오늘 포스트를 진행하도록 하겠습니다.CallAdvisorSpri..
spring JPA를 사용하다 보면, 다음과 같이 JpaRepository를 상속한 Interface를 만들게 됩니다.interface MyBaseRepository extends JpaRepository { … } 이러한 JpaRepository 상속 방식의 장점은 바로 메서드 쿼리 방식으로, Entity 필드를 findBy{Field_1}And{Field_2} 와 같이 작성하면 WHERE field_1 = {Field_1} AND {Field_2} 같은 방식으로 쿼리 조건을 만들어준다는 장점이 있습니다. 해당 방식의 주의할 점은, 메서드 쿼리가 만들어지기 위해서는 Entity의 필드를 참조하기 때문에, 반드시 Entity의 필드명 혹은 쿼리 관련 키워드가 와야 한다는 점입니다. 문제는 해당 JpaRe..
Spring AI란?서버 개발자가 AI를 개발하기 위해서는 많은 복잡성과 러닝커브가 존재합니다.Spring AI는 AI 개발의 복잡성을 최소화하여 앞으로 Spring 개발자가 AI 개발의 생산성을 높이기 위한 프로젝트로 사용될 수 있을듯 합니다.또한, AI 벤더(Open AI, Gemini 등)에 의존하지 않고 Spring에서 지향하는 추상화를 통해 이러한 기능들을 제공합니다. 이번 포스팅에서는 Spring AI에서 다루고 있는 요소들에 대해 간단히 알아보겠습니다. Porterbale APIAI 벤더들에 의존하지 않고, API call 방식을 통해 사용할 수 있는 기능을 제공해줍니다.채팅, 텍스트-이미지 변환, 임베딩 모델을 위한 API 제공 및 동기/비동기 스트리밍 기능을 제공해줍니다. POJO 기반..
QueryDSL 의존성 추가를 위해서는 다음 두 가지 의존성을 추가해야 합니다.implementation("com.querydsl:querydsl-jpa:5.0.0:jakarta")annotationProcessor("com.querydsl:querydsl-apt:5.0.0:jakarta") 문득, 개발을 하다가 궁금한 점이 생겼는데, querydsl-jpa 의존성 하나로 해결할 수 없을까? 라는 생각으로 이번 글을 작성하게 되었습니다. 우선 querydsl 저장소를 살펴보면, 다음과 같이 다양한 의존성을 제공하고 있습니다. 그 중에서 우리가 사용하는 querydsl-jpa와 querydsl-apt도 볼 수 있습니다. 그리고, 우리가 사용하는 querydsl-jpa의 의존성을 보면 다음과 같이 query..
보통 협업을 진행하다 보면 API 스펙을 전달해주고 완벽하게 테스트를 진행했는데도 들려오는 답변이 있습니다."API에서.. cors 에러가 발생해요.." 처음 협업을 진행하면서 CORS에 대해서 잘 모르기도 했었고, 스프링에서는 단순한 설정으로 이를 해결할 수 있었기 때문에 제대로 알아보고려고 하지 않았었죠. 이번에는 너무나 간단한 설정탓에 제대로 이해하지 못 했었던 CORS에 대해서 정리하고자 합니다. CORS란? CORS(Cross-Origin Resource Sharing)란, 클라이언트가 다른 출처(origin)에서 리소스를 요청할 때 발생하는 오류로 브라우저상에서 허용되지 않은 다른 출처를 제한하는 데 사용되는 보안 관련 오류입니다. CORS는 보통 아래 두 가지 이유로 발생하게 됩니다.브라우저..
Spring을 사용하다 보면 어느 순간 버전업이 많이 진행돼서 기존에 사용하던 버전이 레거시가 될 수도 있고 새로운 버전에서 지원해주는 강력한 기능을 사용하고 싶어서 마이그레이션 해야 하는 상황이 올 수 있습니다. 이러한 버전업을 요구하는 상황이 올 경우 어떻게 대처해야 할지, 어떤 부분을 수정하는 게 좋을지를 미리 학습하는 과정을 통해 버전 마이그레이션을 학습해보려 합니다. 마이그레이션 요구사항항목현재 버전변경 버전JDK1.817Gradle5.6.X8.3SpringBoot2.1.X3.1.4 시작 템플릿 build.gralde의존성은 간단하게 spring-boot-starter-web과 롬복 정도만 구성했습니다.plugins { id 'java' id 'org.springframework.bo..
Transaction이란?Spring을 사용하다 보면 자연스럽게 MVC 구조를 접하게 되고, 이 과정에서 데이터 저장소(Model)에 접근하기 위해 JDBC, JPA, Hibernate 등의 기술을 활용하게 됩니다.이러한 기술들을 사용하여 데이터 저장소에 요청할 쿼리를 만들고 실행하기 전까지의 과정을 하나의 작업 단위라고 하는데, 이를 한 단어로 트랜잭션이라고 부릅니다.트랜잭션은 작업 단위 안에서 발생하는 조회, 생성, 수정, 삭제 등의 여러 작업을 하나로 묶어 처리하는데요,예를 들어, 주문이라는 작업은 다음과 같은 단계를 포함하며, 이를 하나의 트랜잭션으로 처리합니다:사용자의 주문 요청상품 재고 감소주문 정보 저장사용자에게 주문 요청 완료 알림 발송이처럼 주문 작업은 여러 단계를 포함하는 하나의 트랜잭..
iron_jin
'spring' 태그의 글 목록