[Spring AI] Spring AI란? 개념부터 전체 구조까지 이해하기
·
개발/Spring
최근 LLM을 활용한 애플리케이션이 빠르게 늘어나면서 기존 웹 서비스에서도 ChatGPT, Claude, Gemini 같은 AI 모델을 사용하는 경우가 많아지고 있다. 예를 들자면 다음과 같은 기능을 생각해볼 수 있다.AI 챗봇문서 기반 질의응답사내 데이터 검색코드 분석문서 요약AI Agent외부 API 자동 호출 Spring Boot 애플리케이션에서도 OpenAI API를 직접 호출하면 이러한 기능을 구현할 수 있다.구조만 보면 간단하다.Spring Application │ │ HTTP Request ▼ OpenAI API │ │ Response ▼ LLM 하지만 실제 서비스를 만들기 시작하면 단순히 HTTP ..
[Spring] Swagger UI와 OpenAPI 문서화 정리
·
개발/Spring
API 명세를 자동으로 만들고 직접 테스트하는 방법REST API를 개발하면 프론트엔드 개발자나 다른 백엔드 개발자에게 다음 정보를 전달해야 한다.어떤 URL을 호출해야 하는가?어떤 HTTP Method를 사용하는가?요청 데이터는 어떤 형식인가?성공과 실패 시 무엇을 반환하는가?이 내용을 별도의 문서에 수작업으로 작성하면 실제 코드가 변경되었는데 문서는 갱신되지 않는 문제가 생길 수 있다.Spring Boot에서는 springdoc-openapi를 사용해 Controller와 DTO를 분석하고, OpenAPI 명세와 Swagger UI를 자동으로 생성할 수 있다.1. OpenAPI와 Swagger UI의 차이두 용어는 함께 등장하지만 역할이 다르다.OpenAPI Specification→ REST API..
[Spring] Spring Boot JPA 동작 원리와 CRUD 정리
·
개발/Spring
Entity 매핑부터 영속성 컨텍스트, 연관관계와 트랜잭션까지Spring Boot로 데이터베이스를 다루기 시작하면 보통 JpaRepository를 상속하고 save(), findById() 같은 메서드를 먼저 사용하게 된다.코드는 매우 간단하다.public interface ProductRepository extends JpaRepository {}하지만 JPA를 제대로 사용하려면 단순히 Repository 메서드를 외우는 것보다 다음 질문에 답할 수 있어야 한다.JPA는 객체를 어떻게 데이터베이스 테이블과 연결할까?save()를 호출하면 SQL이 즉시 실행되는가?조회한 Entity의 값만 바꿨는데 왜 UPDATE가 실행될까?@Transactional은 어떤 원리로 Commit과 Rollba..
[SKALA] 컴포넌트 스캔과 Spring 컨테이너, HTTP 요청 바인딩 정리
·
개발/SKALA 4기
https://daniellee09.tistory.com/56 [SKALA] 4주차 학습 정리 ②: Spring Boot 설정 관리와 MVC·Actuator 정리Configuration, Profile부터 Spring MVC 요청 처리와 운영 모니터링까지이전 글에서는 객체지향 프로그래밍과 REST API, Spring Boot의 기본 구조, IoC와 의존성 주입을 정리했다.이번에는 Spring Boot 애플리케이daniellee09.tistory.com Bean 등록부터 Lombok과 입력값 검증까지이전 글에서는 Configuration과 Profile, Spring MVC의 요청 처리 구조, Controller–Service–Repository 계층, Actuator를 이용한 운영 모니터링까지 정리했다..
[SKALA] Spring Boot 설정 관리와 MVC·Actuator 정리
·
개발/SKALA 4기
Configuration, Profile부터 Spring MVC 요청 처리와 운영 모니터링까지이전 글에서는 객체지향 프로그래밍과 REST API, Spring Boot의 기본 구조, IoC와 의존성 주입을 정리했다.이번에는 Spring Boot 애플리케이션을 실제로 구성하고 운영하는 방법을 중심으로 정리해보았다. 전체 흐름은 다음과 같다.외부 설정 관리→ 환경별 Profile 분리→ Spring MVC 요청 처리→ Controller·Service·Repository 역할 분리→ View 또는 JSON 응답→ Actuator를 이용한 운영 상태 확인 1. Configuration과 외부 설정 관리Spring Boot 애플리케이션에는 코드 외에도 다양한 설정이 필요하다.예를 들면 다음과 같다.서버 포트데이..
[Spring] MVC 패턴과 Spring MVC 동작 원리 정리
·
개발/Spring
Controller, Service, RepositorySpring Boot로 REST API를 만들다 보면 자연스럽게 다음과 같은 구조를 사용하게 된다.Controller→ Service→ Repository→ Database처음에는 단순히 “Spring에서는 이렇게 폴더를 나누는구나”라고 생각하기 쉽다.하지만 이 구조는 파일을 보기 좋게 정리하기 위한 규칙이 아니라, 각 객체의 책임을 분리하여 변경과 테스트에 유리한 프로그램을 만들기 위한 설계 방식이다. 이번 글에서는 MVC가 무엇인지부터 시작해 Spring MVC가 HTTP 요청을 처리하는 실제 과정, @Controller와 @RestController의 차이, 그리고 간단한 상품 조회 API 예제까지 정리해 본다.1. MVC 패턴이란?MVC는 애..
[SKALA] 객체지향(OOP)과 Spring Boot 핵심 정리
·
개발/SKALA 4기
객체지향 프로그래밍부터 REST API, Spring Boot의 IoC·DI까지이번 학습에서는 Spring Boot로 REST API를 구현하기 전에 필요한 백엔드 개발의 기본 개념을 살펴보았다.처음부터 Controller 코드를 작성하는 것이 아니라, Java 객체지향 프로그래밍과 SOLID 원칙을 먼저 학습한 뒤 REST API의 설계 방식, Spring과 Spring Boot의 특징, 개발 환경 구성, 마지막으로 IoC와 의존성 주입까지 이어지는 흐름이었다.객체지향 프로그래밍→ RESTful API 설계→ Spring과 Spring Boot→ 개발 환경 구성→ Spring 컨테이너와 IoC·DI위 다섯 가지 흐름으로 내용을 정리해보겠다.1. 객체지향 프로그래밍과 SOLID 원칙절차적 프로그래밍과 객..
[Spring] DTO는 무엇일까?
·
개발/Spring
Spring으로 웹 애플리케이션, 특히 REST API를 개발하다 보면 DTO라는 용어를 반드시 마주치게 된다.처음에는 "Entity가 있는데 굳이 왜 사용하는 걸까?" 라는 의문이 들었지만, DTO가 깔끔하고 안전한 애플리케이션을 만드는 데 핵심적인 역할을 한다는 걸 알았다. 이 글에서는 DTO의 정확한 개념과 Spring에서 DTO를 사용하는 이유를 정리해 보겠다. 1. 정의DTO란 무엇인가요?DTO는 Data Transfer Object의 약자로, 우리말로는 '데이터 전송 객체' 이다.이름 그대로, 계층(Layer) 간 데이터 교환을 위해 사용하는 객체를 의미한다. 보통 클라이언트(브라우저, 앱)가 서버에 요청을 보낼 때 보내는 데이터를 담거나,서버가 클라이언트에게 응답을 보낼 때 돌려줄 데이터를 ..
[Java] 게시판 만들기 - 1
·
개발/java
프로젝트 설계 부분은 이전 게시글을 참고하자. [Java] 게시판 만들기 - 0백엔드 공부용으로 CRUD 기능을 갖는 아주 간단한 게시판을 만들어보고자 한다. 본격적인 개발에 앞서 기본적인 서비스의 요구사항부터 정의해보자. 1. 요구사항로그인은 생략(나중에 추가) 메인daniellee09.tistory.com 설계해둔 Class Diagram을 참고하여 Bottom-up 방식으로 개발을 진행하고자 한다. 그 이유는 다음과 같다.의존성 방향: 상위 계층이 하위 계층에 의존하므로 하위부터 구현테스트 용이성: 각 계층 완성 후 즉시 테스트 가능안정성: 기반이 되는 부분부터 견고하게 구축가장 먼저 프로젝트의 초기 설정부터 진행해보자. 1. 초기 설정우선 Spring Initializer를 통해 프로젝트를 생성한..
[Spring] Spring Boot란?
·
개발/Spring
Spring을 사용하기 위해서는 여러 가지의 사항들을 미리 설정해주어야 한다. 하지만 그 설정 과정이 상당히 어렵고 복잡한데, 바로 이를 해결하기 위해 스프링 부트가 존재한다. 즉, Spring Boot는 java 기반의 Spring 프레임워크를 기존보다 훨씬 더 빠르고 쉽게 시작할 수 있도록 도와주는 도구라고 볼 수 있다. 1. 왜 Spring Boot인가?설정(설치) 번거로움 최소화전통적으로 Spring 애플리케이션을 만들려면 XML이나 복잡한 자바 설정을 일일이 작성해야 했다.하지만 Spring Boot는 "자동설정(auto-configuration)" 기능으로 기본값이 잘 맞춰져 있어서 손댈 설정이 크게 줄어든다.내장 서버 지원Tomcat, Jetty 같은 웹 서버를 따로 설치, 설정하지 않아도 ..