inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

objmemberrepository 예외 발생

미해결

김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] package io.member.impl; import io.member.Member; import io.member.MemberRepository; import java.io .*; import java.util.ArrayList; import java.util.List; public class ObjectMemberRepository implements MemberRepository { private static final String FILE_PATH = "temp/members-obj.dat"; @Override public void add(Member member) { List<Member> members = findAll(); members.add(member); try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(FILE_PATH))){ oos.writeObject(members); } catch (IOException e) { throw new RuntimeException(e); } } @Override public List<Member> findAll() { try(ObjectInputStream ois = new ObjectInputStream(new FileInputStream(FILE_PATH))){ Object findObject = ois.readObject(); return (List<Member>) findObject; } catch (FileNotFoundException e) { return new ArrayList<>(); } catch (IOException | ClassNotFoundException e) { throw new RuntimeException(e); } } } 코드 동일하게 작성했는데 콘솔 메인에서 마지막 나이를 작성하니 Exception in thread "main" java.lang.RuntimeException: java.io .NotSerializableException: io.member.Member at io.member.impl.ObjectMemberRepository.add(ObjectMemberRepository.java:22) at io.member.MemberConsoleMain.registerMember(MemberConsoleMain.java:52) at io.member.MemberConsoleMain.main(MemberConsoleMain.java:26) Caused by: java.io .NotSerializableException: io.member.Member at java.base/ java.io .ObjectOutputStream.writeObject0(ObjectOutputStream.java:1121) at java.base/ java.io .ObjectOutputStream.writeObject(ObjectOutputStream.java:336) at java.base/java.util.ArrayList.writeObject(ArrayList.java:949) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) at java.base/java.lang.reflect.Method.invoke(Method.java:565) at java.base/ java.io .ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:946) at java.base/ java.io .ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1431) at java.base/ java.io .ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1353) at java.base/ java.io .ObjectOutputStream.writeObject0(ObjectOutputStream.java:1115) at java.base/ java.io .ObjectOutputStream.writeObject(ObjectOutputStream.java:336) at io.member.impl.ObjectMemberRepository.add(ObjectMemberRepository.java:20) ... 2 more 이런 예외가 발생합니다

  • java
  • 네트워크
  • 객체지향
댓글 1 좋아요 0 조회수 68

블로그 목록 조회 시 author 데이터 안나오는 현상

해결됨

Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)

안녕하세요. 강의 내용과 다르게 author 데이터가 안나와서 콘솔로그 찍어서 확인해보니, properties.Author.people 항목에 name이 없네요. 다른 데이터는 조회되고 있는데 왜 안나오는지 도저히 답을 찾을 수 없네요. 공식문서 봐도 응답형식 같은게 바뀐건 아닌것 같아보입니다. AI Assistant에 여러번 질문해봐도 명확한 해결책을 찾지 못했습니다. 이 부분때문에 진도를 나가기 쉽지 않은 상황인데 빠른 답변 부탁드립니다.

  • react
  • 블로그
  • next.js
  • cursor
  • cursorai
nmnnhlba 댓글 2 좋아요 0 조회수 117

Cannot find module serve 에러

해결됨

프론트엔드 개발자를 위한, 실전 웹 성능 최적화(feat. React) - Part. 1

yarn serve로 production 빌드시에 Cannot find module /lecture-1/node_modules/serve/bin/serve.js' 에러가 발생합니다. https://github.com/performance-lecture/lecture-1 여기서 해당 패키지 clone 하고 yarn으로 serve 실행시에 이같은 에러가 발생하는 것 같은데요. 이거 해결 방법이 있을까요?

  • react
  • chrome-devtools
soyeon 댓글 1 좋아요 1 조회수 138

강의 자료

해결됨

김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 섹션 12 - HTTP 서버 만들기 강의자료 26페이지 HttpResponse코드에 setStatus() 메서드 이름이 setStatusCode()인 것 같은데 "Code"가 빠져있어요. 그래서 강의자료 30페이지에 있는 HttpRequestHandlerV4코드 notFound()메서드에서도 setStatusCode가 아닌 setStatus로 작성되어 있습니다!

  • java
  • 네트워크
  • 객체지향
dbaldpahd0216 댓글 2 좋아요 0 조회수 82

답변부탁드리겠습니다.

미해결

실전! Querydsl

(OrderSpecifier)관련 내용 어디있을가요 섹션7에서 스프링 데이터 JPA는 자신의 정렬(Sort)을 Querydsl의 정렬(OrderSpecifier)로 편리하게 변경하는 기능을 제공한 다. 이 부분은 뒤에 스프링 데이터 JPA가 제공하는 Querydsl 기능에서 살펴보겠다. 37. 스프링 데이터 페이징 활용3 - 컨트롤러 개발 -> 여기 챕터에서 뒤에 강의에서 설명하겠다하셨는데 어디 강의일까요.. 섹션8에 OrderSpecifier관련 내용은 없는거같은데요,,?

  • java
  • jpa
임다정 댓글 2 좋아요 0 조회수 102

네트워크 - 프로그램2 / ServerV6 / throws IOException 문의

미해결

김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 메인에서 IOException 을 던지는 이유는 ServerSocket 때문인거 같은데 예외를 발생시키는 항목들을 try문에 넣고 throws IOException을 삭제하면 안돼나요? 아니면 다른의미가 있는건지 궁금합니다. public class ServerV6 { private static final int PORT = 12345; public static void main(String[] args) throws IOException { log("서버 시작"); SessionManagerV6 sessionManager = new SessionManagerV6(); ServerSocket serverSocket = new ServerSocket(PORT); log("서버 소켓 시작 - 리스닝 포트: " + PORT); // ShutdownHook 등록 ShutdownHook shutdownHook = new ShutdownHook(serverSocket, sessionManager); Runtime.getRuntime().addShutdownHook(new Thread(shutdownHook, "shutdown")); try { while (true) { Socket socket = serverSocket.accept(); // 블로킹 log("소켓 연결: " + socket); SessionV6 session = new SessionV6(socket, sessionManager); Thread thread = new Thread(session); thread.start(); } } } catch (IOException e) { log("서버 소캣 종료: " + e); }

  • java
  • 네트워크
  • 객체지향
nada03yo 댓글 1 좋아요 0 조회수 62

일부 강의가 재생이 되지 않습니다

미해결

마이크로서비스 디자인 패턴 완벽 가이드

48강 , 57 강 65강 이 재생이 되지 않는것 같습니다.

  • java
  • spring-cloud
  • 디자인-패턴
  • msa
  • patterns
검은흑사 댓글 2 좋아요 0 조회수 138

탭바에서 href:null 동작 안됨

미해결

React Native with Expo: 제로초에게 제대로 배우기

버전 npm ls react 19.0.0 npm ls react-native 0.79.2 npm ls expo 53.0.9 안녕하세요 다크모드 UI를 깃허브에서 복사했는데 전까지 잘 되던 app/(tabs)/_layout.tsx 에서 post 탭을 안보이게 하는 코드가 제대로 작동하지 않습니다. 기기에서도 (post)/[us... 경로의 탭이 보이고 있습니다. 그 뒤로 제 예전 코드로 다시 돌려봐도 탭이 사라지지 않고 계속 보이는데, 어디서부터 꼬인건지 감이 안잡힙니다ㅠ 문제가 발생한 걸로 추측되는 코드입니다. <Tabs.Screen name="(post)/[username]/post/[postID]" options={{ href: null, }} />

  • react
  • react-native
  • 하이브리드-앱
  • typescript
  • expo
pearl 댓글 2 좋아요 0 조회수 80

프라이빗 폴더를 해야 하는 이유가 모호한 것 같아요.

미해결

Next + React Query로 SNS 서비스 만들기

프라이빗 컴포넌트로 잡은 것과 그냥 컴포넌트로 잡은 것의 차이가 없지 않나요? 컴포넌트를 예로 강의를 찍어 주셨는데 폴더만 더 늘어나고 좋은 예는 아닌듯합니다. 프라이빗 폴더가 어떨 때 왜 필요한지를 알려주는게 더 교육적일 것 같아 글 남깁니다. 컴포넌트 자체가 재사용성을 갖는 것이기에 내부 구성요소만 표기하는 프라이빗은 큰 의미가 없을 것 가은데요. 컴포넌트 외 폴더라고 해도 와닿지는 않습니다. 어차피 컴포넌트로 사용하면 uri 에도 잡히지 않고 말이죠. 전체적으로 폴더 구조만 더 복잡해지는 것 같아요

  • react
  • next.js
  • react-query
  • next-auth
  • msw
수모루 댓글 2 좋아요 0 조회수 106

(OrderSpecifier)관련 내용 어디있을가요

미해결

실전! Querydsl

스프링 데이터 JPA는 자신의 정렬(Sort)을 Querydsl의 정렬(OrderSpecifier)로 편리하게 변경하는 기능을 제공한 다. 이 부분은 뒤에 스프링 데이터 JPA가 제공하는 Querydsl 기능에서 살펴보겠다. 37. 스프링 데이터 페이징 활용3 - 컨트롤러 개발 -> 여기 챕터에서 뒤에 강의에서 설명하겠다하셨는데 어디 강의일까요..답변부탁드릴게요 섹션8에 OrderSpecifier관련 내용은 없는거같은데요,,?

  • java
  • jpa
댓글 1 좋아요 0 조회수 71

`Expo Go` 앱이 보이지 않아요

미해결

React Native with Expo: 제로초에게 제대로 배우기

처음에 제로초님 따라한다고 pnpm build --platform android --profile development 로 한 번 실행을 했습니다. 이 때 go 를 설치하라는 말이 안나와서 '뭔가 이상하다' 했는데요. 이후에는 pnpm run android 로 켜면 development 로 켜집니다. 신기한 건 s 를 누르면 expo go 모드로는 잘 넘어가요. 그런데 Expo Go 앱이 보이지 않아 빌드를 선택해볼 수 가 없습니다. .

  • react
  • react-native
  • 하이브리드-앱
  • typescript
  • expo
gandolkim 댓글 2 좋아요 0 조회수 265

[2주차] 곁다리 질문

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 2주차 성능 테스트 챕터까지 수강했습니다. 제목처럼 강의 주요 내용은 아니지만 궁금한 점이 생겨 글 작성하였습니다. 질문에 악의가 없는데, 쓰다보니 공격적인 말투로 느껴지네요... 죄송합니다. 공격이 아니고 제가 공부한 부분과 달라서 어떤 게 맞는지를 여쭙고자 작성한 질문입니다. 작성해주신 포트폴리오 코드를 보면, A Service에서 A Repository, B Repository, C Repository 등을 주입받아 사용하셨는데 이게 올바른 구조인가요?? 상황: 현재 저는 계층형 폴더 구조(Controller, Service, Repository 등)가 아닌 도메인형 폴더 구조(User, Post, Tag 등)를 가져가고 있습니다. 계층형과 도메인형 모두 자신의 도메인이 아닌 다른 도메인의 다른 레이어 파일을 주입받기 보다는 Service는 Service끼리 주입을 받는 게 결합도를 낮추고 리팩토링하기 편한 방향이라고 생각했습니다. 이러다보니 Controller에서 호출하는 함수는 DTO로 통신을 하고, Service끼리 사용하는 함수는 Entity로 통신을 하게 되었습니다. 주석으로 "Interal method"라고 명시를 하였지만, 응답 형식만 다를 뿐 같은 일을 하는 함수도 많아져서 이게 맞는건가 싶은 고민이 있었습니다. 애초에 Repository를 쓰는 것도 여러 파일에서 쉽게 불러쓰기 위해서라는 말도 봤던 것 같아서 뭐가 맞는지 정답이 궁금합니다. TPS 기준이 궁금합니다. 현재 쿠폰 시스템 비슷한 프로젝트를 하고 있는데, "우리 서비스의 TPS가 몇이다"라고 할 때는 가장 주요한 로직 기준으로 측정한 결과일까요? 아니면 모든 API 중 가장 낮은 TPS가 기준이 될까요? 또한 TPS 300이 되기 위해서, 400이 되기 위해서 이런 식으로 말씀해주셨는데, Insert 또는 Update 작업이 포함된 경우 어느정도 TPS가 나오면 적지 않은 수준일까요? 감사합니다.

  • java
  • spring
  • mysql
  • redis
  • 이력서
정수환 댓글 2 좋아요 0 조회수 88

질문입니다.

미해결

코드로 배우는 React 19 with 스프링부트 API서버

안녕하세요, 강의 잘 수강하고 있습니다 다만 강의랑 자료랑 달라서 물어보고 싶어서 글을 남깁니다. 1. ch3 압축파일에 강의와는 다르게 압축파일에는 search 클래스가 없습니다. ch4 알집파일 todo.d.ts파일에 아래와 같이 writer를 추가하는 게 맞는 건지 궁금합니다. interface TodoModify { tno: number, title: string, writer: string dueDate: string | null, complete: boolean }

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
별다방 댓글 1 좋아요 0 조회수 57

vanilla-extract 못찾는 문제

미해결

Next + React Query로 SNS 서비스 만들기

안녕하세요~ 강의 잘 보고 있습니다! vanilla-extract 적용해보려고 하는데 패키지 설치하고 config설정까지 했는데 해당 에러가 나서 질문드립니다. next.config.ts파일과 globalTheme.css.ts, layout.ts중에 문제가 있을까요?? 파일 이름도 문제가 없고 코드 그대로 사용했는데도 해당 에러가 나서 next15에서 vanilla-extract 적용을 할 수 없는건지 궁금해서 여쭤봅니다.. 감사합니다 // package.json // next.config.ts import type { NextConfig } from "next"; const { createVanillaExtractPlugin // eslint-disable-next-line @typescript-eslint/no-require-imports } = require('@vanilla-extract/next-plugin'); const withVanillaExtract = createVanillaExtractPlugin(); const nextConfig: NextConfig = { /* config options here */ experimental: { serverActions: { bodySizeLimit: '10mb', // Set the body size limit for server actions } }, async rewrites() { return [ { source: '/upload/:slug', destination: `${process.env.NEXT_PUBLIC_BASE_URL}/upload/:slug`, // Matched parameters can be used in the destination }, ] }, }; module.exports = withVanillaExtract(nextConfig); // globalTheme.css.ts import {assignVars, createGlobalTheme, createGlobalThemeContract, globalStyle} from "@vanilla-extract/css"; export const global = createGlobalThemeContract({ background: { color: 'bg-color' }, foreground: { color: 'fg-color' }, }) const whiteGlobalTheme = { background: { color: 'rgb(255, 255, 255)' }, foreground: { color: 'rgb(0, 0, 0)' }, } const darkGlobalTheme = { background: { color: 'rgb(0, 0, 0)' }, foreground: { color: 'rgb(255, 255, 255)' }, } createGlobalTheme(':root', global, whiteGlobalTheme); // 실제 적용 globalStyle(':root', { '@media': { '(prefers-color-scheme: dark)': { vars: assignVars(global, darkGlobalTheme), } } }) globalStyle('*', { boxSizing: 'border-box', padding: 0, margin: 0, }) globalStyle('html', { '@media': { '(prefers-color-scheme: dark)': { colorScheme: 'dark', } } }); globalStyle('html, body', { maxWidth: '100dvw', overflowX: 'hidden', }) globalStyle('body', { color: global.foreground.color }) globalStyle('a', { color: 'inherit', textDecoration: 'none', }) // layout.tsx import type {Metadata} from 'next' import {Inter} from 'next/font/google' import './globalTheme.css'; import {MSWProvider} from "@/app/_component/MSWComponent"; import AuthSession from "@/app/_component/AuthSession"; if (process.env.NEXT_RUNTIME === 'nodejs' && process.env.NODE_ENV !== 'production' && process.env.MSW_ENABLED !== 'false') { const {server} = require('@/mocks/http') server.listen() } const inter = Inter({subsets: ['latin']}) export const metadata: Metadata = { title: 'Create Next App', description: 'Generated by create next app', } type Props = { children: React.ReactNode, }; export default function RootLayout({children}: Props) { return ( <html lang="en"> <body className={inter.className}> <MSWProvider> <AuthSession> {children} </AuthSession> </MSWProvider> </body> </html> ) }

  • react
  • next.js
  • react-query
  • next-auth
  • msw
신재훈 댓글 2 좋아요 0 조회수 255

결과 값의 정렬

미해결

죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.

멀티 스레딩에서 파일에 write할 때 질문이 있습니다. thread가 chunk 단위로 파일에 입력되는것은 확인했습니다. 그런데 결과 값의 정렬은 불가능한가요???? 예를 들어 db에 1, 2, 3, 4, 5 ... 라는 데이터가 있고 FlatFileItemWriter로 파일에 쓸 경우 1,2,3,4,5 이런식으로 정렬된 값이 저장 가능한지

  • java
  • spring
  • spring-boot
  • spring-batch
  • backend
이동연 댓글 2 좋아요 1 조회수 67

git허브 커밋에서

미해결

제로베이스부터 배우는 웹개발의 개념과 바이브 코딩

커밋을 하고 나서 sure all&commit changes를 누르면 저렇게 화면이 분활되고 아무것도 작성이 안되는 상태가 되는데 어떤 이유인지 잘 모르겠습니다...

  • react
  • 웹앱
  • next.js
  • cursor
  • 인공지능(ai)
CHOI 댓글 2 좋아요 0 조회수 81

JpaPagingItemReader

미해결

죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.

humanThreatDataReader는 스레드 안전한 JpaPagingItemReader 를 사용했다. 라는 구문에서 헷갈리는게 있는데 JpaPagingItemReader의 경우는 lock을 걸지 않는데 SynchronizedItemStreamReader 데코레이터를 적용해야하지 않나요???

  • java
  • spring
  • spring-boot
  • spring-batch
  • backend
댓글 2 좋아요 1 조회수 136

getPostMetadata 내부 함수에서 클로저를 활용하는 방식이 더 나은 선택일까요?

미해결

Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)

강의 영상에서 getPostMetadata 메서드 내부에서 getCoverImage 메서드를 선언하여 커버 이미지를 다루고 있는데, 저는 이 함수가 내부에 선언된 이유를 두 가지로 이해했습니다. 캡슐화 및 스코프 제한 : 외부에서 사용할 필요가 없는 함수이므로 내부에 선언해 함수의 범위를 명확히 제한 가독성 향상 : 커버 처리 로직을 분리하여 주 함수의 가독성을 개선 그런데 영상을 보면서 든 궁금증이 한 가지 있습니다. 현재 코드에서는 getCoverImage 에 page.cover 를 매개변수로 전달하고 있는데, getPostMetadata 내부에서만 사용되는 함수라면, 클로저를 이용해 page 에 직접 접근하는 방식이 더 자연스럽지 않나요? function getPostMetadata(page: PageObjectResponse): Post { const getCoverImage = () => { if (!page.cover) return ''; switch (page.cover.type) { case 'external': return page.cover.external.url; case 'file': return page.cover.file.url; default: return ''; } }; return { coverImage: getCoverImage(), // ... }; } 이렇게 하면 page.cover 를 매개변수로 전달하지 않아도 되어 더 간결하고, 함수 내부에서도 page 에 자유롭게 접근하여 처리할 수 있다고 생각합니다. 물론 정답은 없겠지만 클로저를 활용하여 외부 스코프에 직접 접근하는 방식 명확하게 매개변수를 전달하여 의도를 분리하는 방식 이 두 가지 방식 중 위 상황에서는 어떤 방식이 더 바람직한지, 혹은 상황에 따라 어떤 기준으로 선택해야 하는지 궁금합니다!

  • react
  • 블로그
  • next.js
  • cursor
  • cursorai
  • 클로저
강병준 댓글 1 좋아요 0 조회수 71

3.4) node.js 모듈 시스템 이해하기 / 실습 중 오류가 없어요 ..

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

package.json 파일에 맨밑 "type": "module" 를 삽입하고 npm run start 를 하면 강의에는 esm과 js모듈을 같이 사용할 수 없기 때문에 오류난다 하셨는데 정상적으로 작동하는 현상이 발생합니다

  • javascript
  • react
  • node.js
이근호 댓글 2 좋아요 0 조회수 174

상태 질문

미해결

죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.

상태(State): 작전 수행 지점들 상태(State)란 Flow 내에서 현재 실행이 머무르거나 도달할 수 있는 모든 논리적 지점 을 의미한다. 자동문의 "문 닫힘/문 열림" 에 해당한다. Flow를 구성하는 상태(State)는 크게 두 가지 주요 유형으로 분류할 수 있다. 실행 상태 (StepState 등): 실행 상태는 Flow 내에서 실제 특정 작업(로직)을 수행하는 지점을 나타낸다. 우리 강의의 예제 코드에서 사용된 analyzeContentStep , publishLectureStep , summarizeFailureStep 과 같은 Step이 대표적인 실행 상태(StepState)에 해당한다. 종료 상태 ( EndState ): 종료 상태는 Flow 실행의 최종 도착점을 나타내는 상태이다. Flow가 이 상태에 도달하면 더 이상 진행되지 않고 실행이 종료된다. Job의 최종 결과는 Flow가 어떤 EndState 로 끝났는지에 따라 결정된다. 다이어그램의 [작업 종료] 가 바로 이 종료 상태(EndState)를 가리킨다. 종료 상태(EndState): Flow 실행의 최종 도착점 이다. 이 상태에 도달하면 실행 흐름이 더 이상 진행되지 않고 Flow가 종료된다. Job의 최종 결과는 어떤 EndState로 끝났는지 에 따라 결정되며, 앞선 다이어그램의 [작업 종료] 가 바로 이 종료 상태(EndState)에 해당한다. 여기서 종료 상태가 두개인데 다른 내용인가요???

  • java
  • spring
  • spring-boot
  • spring-batch
  • backend
이동연 댓글 2 좋아요 1 조회수 61

인기 태그

인프런 TOP Writers

주간 인기글