본문 바로가기
반응형

Spring31

Spring Batch Flux ㅇ 개요Spring Batch는 본래 동기식 처리를 중심으로 설계된 프레임워크데이터의 대량 처리 및 배치 잡 실행을 위한 구조를 가짐최근 Reactive 프로그래밍 방식이 각광받으면서 Flux(Reactive Streams) 기반으로 Spring Batch를 연동하거나 활용하려는 시도가 늘고 있다고 함 ㅇ 핵심 기본 모델Spring Batch는 Blocking(동기) 방식 기반Flux 도입Spring WebFlux와 통합 또는 비동기 데이터 소스로부터 Reactive 방식으로 데이터 처리 가능공식 지원Spring Batch는 완전한 Reactive 처리를 공식적으로 지원하지 않음→ 일부 Reader/Writer에서 WebClient + Flux 적용활용 목적비동기 API 호출 또는 대용량 비동기 처리 .. 2025. 6. 29.
Spring Batch (스프링 배치) 정리 ㅇ Spring Batch 란?- 대용량 데이터 처리에 특화된 배치 처리 오픈 소스 프레임워크- 대량의 레코드를 처리하는데 필수적인 재사용 가능한 기능과 신뢰성있게 수행하기 위한 다양한 기능 제공 > 로깅/추적(로그 및 상태 저장), 병렬 처리 및 청크 기반 처리, 스케줄링 연동 용이(Spring scheduler, Quartz 등), 트랜잭션 관리, Job 처리 통계, Job 작업 중단/재시작, 스킵 및 자원 관리, 최적화 및 파티셔닝, 초고용량 및 고성능 배치 기술 등- 보통 다음의 과정을 포함함 : > 데이터 읽기 (Read) > 데이터 처리 (Process) > 데이터 쓰기 (Write) ㅇ Spring Batch 구성 요소① Job - 배치 처리 단위의 최상위 개념 - 여러 .. 2025. 6. 15.
FeignClient 정리 ㅇ FeignClient란?- Netflix에서 개발한 HTTP 클라이언트로, 인터페이스 기반의 프로그래밍을 통해 외부 REST 서비스와의 통신을 간단하게 처리할 수 있게 해줌- 마이크로서비스 아키텍처(MSA) 환경에서 서비스 간의 통신을 간편하게 처리할 수 있도록 도와주는 선언적 HTTP 클라이언트- Java 진영, 특히 Spring Cloud에서 널리 사용되며, REST API 호출을 마치 로컬 메서드 호출처럼 추상화할 수 있도록 해줌- Spring Cloud는 Feign을 확장하여 @FeignClient 어노테이션을 제공하고, 이를 통해 서비스 간 통신을 추상화 함 ㅇ 사용 이유기존 방식 (RestTemplate, WebClient)Feign 방식요청 URL, 파라미터, HttpMethod 직접.. 2025. 5. 21.
스프링 & 스프링 Web MVC 주요 개념 ▶ 의존성 주입과 스프링- 스프링 프레임워크는 웹이라는 제한적인 용도로만 쓰이는게 아닌 객체지향의 "의존성 주입(Dependency Injection)" 기법을 적용할 수 있는 객체지향 프레임워크임.- 스프링 프레임워크는 경량(light weight) 프레임워크를 목표로 만들어짐.- 스프링 프레임워크는 가장 중요한 역할을 하는 라이브러리와 여러 개의 추가적인 라이브러리를 결합하는 형태로 프로젝트 구성함. → 대표적으로 웹 MVC 구현을 쉽게 할 수 있는 'Spring Web MVC'나 JDBC 처리를 쉽게 할 수 있는 'MyBatis'를 연동하는 'mybatis-spring' 같은 라이브러리가 있음.  ▷ 의존성 주입 (Dependency Injection)- 의존성 주입은 어떻게 하면 '객체와 객체 간.. 2024. 6. 23.
서블릿 API 필수적 개념 (세션, 쿠키, 필터, 리스너) ▶ 세션과 필터 - 웹은 기본적으로 과거의 상태를 유지하지 않는 Stateless(무상태) 연결. - 요청과 응답을 하나의 단위로 처리하면서 기존 사용자에 대한 정보는 기억하지 않음. - Stateless라는 특징으로 인해 기존의 방문자를 기억하기 위해서 특별한 메커니즘을 사용하는데, 세션(HttpSession)이나 쿠키(Cookie) 또는 특정한 문자(Token)을 이용함. ↳ 로그인 유지를 위한 모든 기능을 웹에서는 세션 트랙킹(Session tracking)이라고 함. ▷ 쿠키(Cookie) - 문자열로 만들어진 데이터의 조각으로 서버와 브라우저 사이에서 요청이나 응답시에 주고받는 형태로 사용. - 쿠키는 문자열로 되어있는 정보로 가장 기본적인 형태는 이름(name)과 값(value)의 구조 - 개.. 2023. 9. 17.
Spring Tiles (스프링 타일즈) 스프링 타일즈(Tiles)란? - 스프링 프레임워크를 기반으로 한 웹 애플리케이션에서 레이아웃과 템플릿 기능을 제공하는 뷰 템플릿 엔진. - 스프링 타일즈를 사용하면 웹 페이지의 일부분을 재사용 가능한 타일(템플릿)로 정의하고, 이를 조합하여 다양한 웹 페이지를 생성할 수 있음. - 페이지들을 일괄 관리 할 수 있고, 공통으로 사용하는 부분들을 매번 따로 등록해주지 않아도 된다. (디자인과 구조를 간편하게 관리, 코드의 재사용성과 유지보수성 향상) ▷ 스프링 타일즈의 특징과 장점 ① Tile(Template) 기반의 레이아웃 - Spring Tiles를 사용하면 웹 페이지의 레이아웃을 타일로 분리하여 정의할 수 있음. 이렇게 정의한 타일을 여러 웹 페이지에서 재사용할 수 있으며, 레이아웃의 변경이 필요할.. 2023. 7. 25.
웹 페이지 파일(이미지) 업로드 & 페이지네이션 로컬에 있는 이미지 파일을 웹 페이지에 갖다 올리고 다운로드 하는 기능을 만들어 보고 페이징 처리까지 해보도록 하겠다. 웹 프로그램은 도서 CRUD를 기반으로 할 것이고 CSS가 작살나서 디자인은 적용하지 않고 기능적인 부분만 정리해볼 것이다. 이전 도서 CRUD 프로그램 포스팅 https://suldenlion.tistory.com/117 스프링 CRUD Library 프로그램 버전별 정리 後 웹에서 동적으로 CRUD를 할 수 있는 도서관리 프로그램을 스프링을 이용하여 만들고 몇 가지 기술을 정리해 볼 것이다. https://suldenlion.tistory.com/113 Servlet 프로그래밍 (동적 Library CRUD 프로그램) JNDI suldenlion.tistory.com 도서 등록 화면.. 2023. 7. 24.
(Spring 관련 정보) Dispatcher Servlet, Filter, Interceptor에 대하여 Dispatcher Servlet, Filter, Interceptor는 웹 애플리케이션에서 클라이언트의 요청을 처리하는데 사용되는 컴포넌트들이다. Dispatcher Servlet - 디스패처 서블릿은 가장 앞단에서 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 컨트롤러에 위임해 주는 프론트 컨트롤러(Front Controller) 혹은 중앙제어 컨트롤러(Central Controller)라 할 수 있으며 Spring MVC 프레임워크에서 주요한 역할을 수행함. - 웹 애플리케이션의 진입점으로써 클라이언트의 모든 요청을 받아들이고, 요청에 대한 처리를 적절한 핸들러(=Controller)로 매핑하여 해당 Handler가 요청을 처리할 수 있도록 전달함. - 요청과 응답의 흐름을 관리하고, 핸들러와.. 2023. 7. 18.
스프링 CRUD Library 프로그램 버전별 정리 後 웹에서 동적으로 CRUD를 할 수 있는 도서관리 프로그램을 스프링을 이용하여 만들고 몇 가지 기술을 정리해 볼 것이다. https://suldenlion.tistory.com/113 Servlet 프로그래밍 (동적 Library CRUD 프로그램) JNDI와 Connection Pooling 내용 정리 + 웹 기반의 도서 정보 관리 시스템인 Library CRUD 프로그램을 만들어보겠다. 이 프로그램은 자바 서블릿을 활용하여 도서 정보를 생성(Create), 조회(Read), 수정(Update), suldenlion.tistory.com 프로그램의 기본 토대로 이전에 다룬 Servlet Library CRUD 프로그램을 가져올 것이다. (Servlet 프로그램을 Spring으로 Migration 할 것이.. 2023. 7. 17.
MyBatis 정리 ▷ MyBatis란? - MyBatis는 자바 기반의 오픈 소스 퍼시스턴스 프레임워크이다. - DB에 접근하여 데이터를 조회, 추가, 수정, 삭제할 수 있는 기능을 제공함. - MyBatis는 SQL 매핑을 통해 개발자가 직접 SQL 쿼리를 작성하고, 이를 자바 코드와 매핑하여 DB와 상호작용할 수 있게 해줌 ▷ MyBatis의 주요 구성 요소 ① XML 파일 매핑 : MyBatis는 DB 연산을 수행하기 위한 SQL 쿼리와 자바 객체 간의 매핑을 정의하는 XML 매핑 파일을 사용함. 이 매핑 파일은 DB 테이블과 자바 객체 간의 매핑 정보를 포함한다. ② SqlSessionFactory : SqlSessionFactory는 MyBatis의 핵심 인터페이스로, DB 연결과 트랜잭션 관리를 담당한다. Sq.. 2023. 7. 16.
(스프링 관련 정보) web.xml / servlet-context.xml / root-context.xml 에 대하여 ▷ web.xml / servlet-context.xml / root-context.xml의 역할과 차이 1) web.xml - Java 애플리케이션에서 서블릿 컨테이너에 대한 설정 정보를 포함하는 배치 서술자(Deployment descriptor) 파일. - 웹 애플리케이션의 배치, 구성, 초기화, 보안 설정 등을 정의하는 XML 파일 - 웹 애플리케이션 아카이브(war 파일)의 'WEB-INF' 디렉토리에 위치하며, 서블릿 컨테이너의 의해 읽혀지고 해석됨. - XML 구문을 따름 - 최신 버전의 Java EE에서는 'web.xml' 대신에 자바 기반의 어노테이션 설정과 'web-fragment.xml'등의 설정 방식 사용 - 웹 애플리케이션 서버(WAS)가 최초로 구동될 때(톰캣 최초 구동시) 각종.. 2023. 7. 16.
페이지네이션 (Pagination) - Servlet 프로그래밍 ● 페이지네이션(Pagination) - 페이지네이션(Pagination) 또는 페이징(Paging)은 데이터나 콘텐츠를 페이지로 나누는 기술이나 기법을 의미함 - 주로 대량의 데이터나 긴 목록을 여러 페이지로 나누어 표시할 때 사용 - 사용자는 페이지 단위로 데이터를 탐색하고 필요한 정보에 빠르게 접근할 수 있음 - 각 페이지는 일정한 개수의 아이템을 포함하며, 페이지간에 이전 페이지와 다음 페이지로 이동할 수 있는 링크 또는 버튼이 제공됨 - 페이지네이션은 웹 애플리케이션, 블로그, 포럼, 검색 결과 페이지 등 다양한 온라인 플랫폼에서 사용되는 기능 위와 같은 경우가 페이지네이션의 예시이다. 이전 게시글의 프로그램을 바탕으로 도서목록을 띄워주는 화면에 페이지네이션 기능을 구현해보겠다. https://.. 2023. 7. 8.
Servlet 프로그래밍 (동적 Library CRUD 프로그램) JNDI와 Connection Pooling 내용 정리 + 웹 기반의 도서 정보 관리 시스템인 Library CRUD 프로그램을 만들어보겠다. 이 프로그램은 자바 서블릿을 활용하여 도서 정보를 생성(Create), 조회(Read), 수정(Update), 삭제(Delete) 할 수 있게 한다. 화면은 크게 세 페이지로 분류될 것이다. 도서 등록을 위한 book_regist.jsp 페이지와 도서 목록을 보여주며 삭제 기능을 포함하는 book_list.jsp 페이지, 도서 내용 수정을 위한 book_detail.jsp 페이지로 구성된다. 도서 등록을 위한 ISBN(International Standard Book Number, 국제 표준 도서번호)과 도서명, 저자, 출판사, 출판일을 입력하면 책 정보가 있는 .. 2023. 7. 2.
Servlet 프로그래밍 (동적 웹 회원가입 폼 만들기) 이번 프로그램에서는 Servlet 프로그래밍의 전체적인 흐름과 페이지간 데이터 요청 및 응답을 중점적으로 확인해 볼 것이다. 웹 상에서 보여줄 회원 가입 폼을 아래와 같이 만들어주고, 여러 가지 기능들을 다뤄볼 것이다. 회원 가입에 필요한 정보들을 입력받고, 다음과 같은 유효성 검사를 해보도록 하겠다. (유효성 검사란 정해진 형식의 데이터만 입력 가능하도록 제한하는 기능을 말한다) ● 아이디 입력시 8자리가 넘지 않도록 하며, 첫번째 글자는 영문 소문자가 되도록 한다. ● 비밀번호 일치 여부를 비고란에 출력한다. ● 우편번호 검색을 위한 api를 갖다 써본다. (Daum에서 제공) ● 생년월일을 구하기 위한 알고리즘을 AJAX 문으로 구현해본다. ● 라디오박스, 체크박스, text area를 갖다넣고 s.. 2023. 7. 1.
Servlet, WAS에 대한 정리 (동적 웹 프로그래밍) Servlet과 WAS(Web Application Server)에 대한 간단한 정리 후 이를 이용한 간단한 동적 회원가입 폼 웹 프로그램을 만들어 보겠다. ▷ Static Web Page (정적 웹 페이지) - 언제 접속해도 같은 응답을 보내주는 페이지를 말함. (서버에 저장된 HTML, CSS, JS 등의 파일이 변경되지 않음) ▷ Dynamic Web Page (동적 웹 페이지) - 브라우저에게 요청을 받은 이후 서버가 추가적인 처리과정을 거친 이후 클라이언트에게 응답 보냄. (HTML으로는 구현 불가함으로 Java, JSP, PHP, ASP 등을 섞어서 구현) ◈ Web Server와 WAS(Web Application Server) - Web Server의 개념은 하드웨어와 소프트웨어로 나뉨. .. 2023. 6. 30.
단축 URL API 설계 (네이버) 설계 : [ Naver API ] ← request [ Spring Boot App ] ← CRUD → [ DB ] (단축 URL) response → response ↓ ↑ request [ User ] [ ShortUrlController ]-----[ ShortUrlService ]-----[ ShortUrlDAO ]-----[ ShortUrlRepository ] | | [ ShortUrlServiceImpl ] [ ShortUrlDAOImpl ] Controller 설계 (ShortUrlController) : Field NaverClientID => property Field NaverClientSecret => property @Autowired ShortUrlService Method : .. 2022. 11. 9.
Test Coverage 노트 코드 커버리지 - 소프트웨어의 테스트 수준이 충분한지 표현할 수 있는 지표 중 하나. 테스트를 진행했을 때 해당 코드가 실행되었는지를 표현하는 방법. 많은 코드 커버리지 도구가 있으며, Jacoco는 가장 보편적으로 사용되는 도구 Jacoco 란? - Java 코드의 커버리지를 체크하는 라이브러리. 작성된 코드의 Test Coverage를 측정하는 도구. Runtime으로 Test Case를 실행하여 Coverage를 체크하는 방식으로 사용됨. 테스트 코드를 통해 테스트를 실행하고 그 결과를 html, xml, csv 등의 형식으로 report를 제공함. 블랙 박스 테스트 / 화이트 박스 테스트 Black Box Test : 소프트웨어의 내부 구조나 작동 원리를 모르는 상태에서 동작을 검사하는 방식. 다.. 2022. 11. 8.
RestTemplate, TDD 노트 RestTemplate 이란? - 스프링에서 제공하는 HTTP 통신 기능을 쉽게 사용할 수 있게 설계되어 있는 템플릿. HTTP 서버와의 통신을 단순화하고 RESTful 원칙을 지킴. 동기 방식으로 처리되며, 비동기 방식으로는 AsyncRestTemplate이 있음. RestTemplate 클래스는 REST 서비스를 호출하도록 설계되어 HTTP 프로토콜의 메소드에 맞게 여러 메소드를 제공함. RestTemplate의 여러 메소드 Method HTTP 설명 getForObject GET GET 형식으로 요청하여 객체로 결과를 반환 받음 getForEntity GET GET 형식으로 요청하여 ResponseEntity로 결과를 반환 받음 postForObject POST POST 형식으로 요청하여 객체로 결.. 2022. 11. 7.
반응형