안녕하세요 Next app router 관련해서 질문드립니다. 현재 사이드프로젝트에서 route handler를 적극활용하고 있는데요. 제가 인프라나 백엔드 관련 지식이 없다보니 좀 헷갈리는게 있습니다. 현재 저희 서비스에서 특정 API는 클라이언트 컴포넌트에서 route handler로 API 호출 -> route handler에서 외부 백엔드 API 호출 이런 형태로 사용되고 있는데요, 이때 실제로 route handler 서버가 아래의 사진 중 어느 형태로 운용되는 것인가요? 즉, Next 프로젝트를 배포했을 때 각 유저마다 route handler 서버가 할당되는 것인가요? 아니면 모든 유저의 요청을 오직 하나의 route handler서버에서 대응하는 것인가요? 아니면 이게 배포 환경에 따라 달라지는것인가요?
@Async @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT) public void handleEventJoinCompleted(EventJoinCompletedEvent event) { try { kakaoTalkMessageApi.sendEventJoinMessage( event.getPhoneNumber(), event.getEventName() ); } catch (Exception e) { log.error("알림 발송 실패. eventId={}, eventName={}", event.getEventId(), event.getEventName(), e); } } 이 로직은 비동기적으로 이벤트를 처리하는 알림서비스 로직입니다. @TransactionalEventListner(Aftercommit)를 사용하면 메인 로직이 commit 된 이후에 해당 이벤트가 실행하는 걸로 알고있는데 @Asnyc를 붙히지 않았더라도 메인 로직에서 끝마치고 해당 이벤트를 실행하니깐 똑같은 결과가 나오지 않나요? 차이가 궁금합니다!
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
안녕하세요? 강사님 덕분에 열공하고 있습니다. 2가지 문의드립니다. 1) 프론트엔드의 리액트 소스 부탁드립니다. ==> cyj10241@gmail.com 2) 45강 빌드를 하려는데 오류가 납니다. 저는 java를 17를 인스톨했습니다. [ec2-user@ip-172-31-43-148 Spring_Web]$ java -version openjdk version "17.0.15" 2025-04-15 LTS OpenJDK Runtime Environment Corretto-17.0.15.6.1 (build 17.0.15+6-LTS) OpenJDK 64-Bit Server VM Corretto-17.0.15.6.1 (build 17.0.15+6-LTS, mixed mode, sharing) [ec2-user@ip-172-31-43-148 Spring_Web]$ chmod +x ./gradlew [ec2-user@ip-172-31-43-148 Spring_Web]$ ./gradlew build -x test FAILURE: Build failed with an exception. * What went wrong: Could not determine the dependencies of task ':bootJar'. > Could not resolve all dependencies for configuration ':runtimeClasspath'. > Failed to calculate the value of task ':compileJava' property 'javaCompiler'. > Cannot find a Java installation on your machine (Linux 6.1.134-152.225.amzn2023.x86_64 amd64) matching: {languageVersion=17, vendor=any vendor, implementation=vendor-specific, nativeImageCapable=false}. Toolchain download repositories have not been configured. * Try: > Learn more about toolchain auto-detection and auto-provisioning at https://docs.gradle.org/8.14/userguide/toolchains.html#sec:auto_detection . > Learn more about toolchain repositories at https://docs.gradle.org/8.14/userguide/toolchains.html#sub:download_repositories . > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org . 위와 같은 오류가 나는데 해결 방법을 알고 싶습니다. 감사합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. Execution failed for task ':test'. > There were failing tests. See the report at: file:///C:/Users/tahee/OneDrive/%EB%B0%94%ED%83%95%20%ED%99%94%EB%A9%B4/hello-spring/build/reports/tests/test/index.html * Try: > Run with --scan to get full insights. BUILD FAILED in 1s 4 actionable tasks: 2 executed, 2 up-to-date 5분 27초까지 하고 실행했는데 오류나요 챗지피티가 하라는 거 다 해봤는데도 소용이 없네요 이거 가지고 3시간째 매달려 있는데 해결해주실 분 계실까요 하 모든 코드에 에러 없는데 실행만 하면 저래요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 변수를 만들 때 어떤 때는 예를 들어 int total;로 하고 어떨 때는 int total=0;으로 하시던데 무슨 차이인가요? 그리고 어떨때는 int total;로 하면 오류뜨고 int total=0;으로 하면 오류가 없어지던데 메커니즘이 어떻게 되는지 모르겠습니다.
안녕하세요. JpaMain.java 코드에서 em.persist 순서에 따라 UPDATE 문이 발생하는데요. em.persist(parent); em.persist(child1); em.persist(child2); 이렇게 적었을 땐 강사님과 똑같은 코드로 update 문이 발생하지 않고, 아래와 같이 작성했을 때 update 쿼리가 마지막에 한번 더 나갑니다. em.persist(child1); em.persist(child2); em.persist(parent); 이유가 무엇인지 궁금합니다. 편의 메서드에서 child을 더티 체크하기 때문에 update 쿼리가 나간 것 같은데, 왜 순서를 바꿨을 땐 update 쿼리가 발생하지 않는지 잘 모르겠습니다!
Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)
안녕하세요! 강의 잘 듣고 있습니다. 제가 혼자 실습하다가 createPostAction 의 반환값에 success 필드를 넣은 후에 useActionState 의 initialState 에도 이 필드를 아래와 같이 추가했었는데요, const [state, formAction, isPending] = useActionState(createPostAction, { message: '', errors: {}, formData: { title: '', tag: '', content: '', }, success: false, }); useActionState 훅을 사용할 때 initialState 에 포함된 필드 중 일부를 이후 action 함수의 반환값에서 생략하면 어떤 경우에는 에러가 발생하고, 어떤 경우에는 아무 문제 없이 동작하는 게 잘 이해가 되지 않아서요. 예를 들어 initialState 에는 success 필드가 있지만, 유효성 검사 실패 시 반환 객체에서 success 를 생략하면 에러가 발생합니다. if (!validatedFields.success) { return { errors: validatedFields.error.flatten().fieldErrors, message: 'Validation failed', formData: rawFormData, success: false, // 없으면 useActionState 에서 에러 발생 }; } 그런데 try...catch 문에서는 success 없이 반환하면 에러가 발생하지 않는 걸 확인할 수 있었습니다. try { const { title, tag, content } = validatedFields.data; await createPost({ title, tag, content }); revalidateTag('posts'); return { success: true, // 없어도 에러 안남 message: 'Post created successfully', }; } catch (e) { return { message: 'Failed to create post : ' + e, formData: rawFormData, }; } formData 필드도 비슷하게 행동하는데 이 차이가 왜 발생하는지, 어떤 기준으로 반환 객체의 필드 구조를 검사하고 에러를 발생시키는지 궁금합니다. useActionState 에서 반환 객체의 필드가 initialState 와 구조적으로 정확히 일치해야 하는 조건이 언제 적용되는 건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. Scanner 반복예제2에서 코드 똑같이 입력했는데 마지막 int sum 줄에서 오류가 발생합니다.. 왜 이러는걸까요?
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 클라이언트의 자원 정리에 대해 궁금한 점이 생겨 질문드립니다. 코드에서 클라이언트의 자원은 try-with-resources 를 적용해 정리하는데, 만약 클라이언트 프로그램을 IntelliJ에서 종료 버튼으로 종료하면 클라이언트의 try-with-resources의 close() 메서드가 호출이 되어 자원이 정리되고 프로그램이 종료되는지, 아니면 바로 프로그램이 종료되고 OS의 책임으로 넘어가는지 궁금합니다. 항상 좋은 강의 감사드립니다!
데이터베이스 정규화 등으로 그럴 일은 거의 없겠지만, 만약 @MappedSuperclass 어노테이션을 사용하는 여러 클래스가 있을 때 여러 개를 적용하고 싶다면 어떻게 사용하면 될까요? 자바는 단일 상속만 지원해서 궁금해지네요. 1번 질문과 비슷한 질문일 수 있는데 상속 관계 매핑과 공통 속성(@MappedSuperclass)을 같이 사용하고 싶을 때도 어떤 식으로 해야하는지 궁금합니다.
@ParameterizedTest @CsvSource({ "0, 0, true", "100, 0, false", "0, 100, false" }) public void testFree(int basePrice,int maxPrice,boolean isFree){ // Given Event event = Event.builder() .basePrice(basePrice) .maxPrice(maxPrice) .build(); //When event.update(); //Then assertThat(event.isFree()).isEqualTo(isFree);; } @RunWith(JUnitParamsRunner.class) 는 junit4 여서 사용하지 못하고 junit5 에서는 @Test 로 파라메터 값을 지원하지 않기 때문에 파라메터 테스트를 위해 @ParameterizedTest ` CvSure` 으체해서스트했습니다