묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨서버개발자 과제전형 완벽가이드 - 1편
멀티모듈 구성 질문입니다.
학습관련 질문을 남겨주세요! 상세히 작성주시면 더 좋아요 🙂아래 질문이랑 차이가 있습니다.멀티모듈 extenal에서 kakao-client new 모듈을 만들때 모듈은 생성이 안되고 iml파일과 src폴더만 생성입니다. 이럴 때는 어떻게 해야하나요? 그리고 그림처럼 모듈이 없는데 이미 프로젝트내에서 모듈이 존재한다고 합니다.시도방법:캐시삭제clean 후 build프로젝트 종료후 재시작Import Module 추가settings.gradle에서 아래 글자 추가 하고 멀티모듈 생성했는데 iml 파일 만들어집니다.아래글자 주석 처리했는데도 똑같은 현상 나옵니다.include 'external:kakao-client'파일은 메일로 보냈는데 확인 부탁드립니다.
-
해결됨서버개발자 과제전형 완벽가이드 - 1편
멀티모듈 구성 강의에 대해 질문이 있습니다.
멀티모듈 구성 강의에 대해 질문잉 이씁니다.해당 강의에서 모듈 만들 때 아래처럼 파일 디렉토리가 되어있는데요.search-api├── src │├── main ││ ├── java ││ ├── resources │├── test ├── build.gradle 제가 만들때는 아래 처럼 됩니다.저는 왜 선생님 처럼 java로 모듈을 만들면 src 폴더에 아래 파일이 안생기고 lib 폴더만 생기는 이유가 뭘까요?│ ├── java ││ ├── resources │├── test ├── build.gradle저는 모듈 구성할 때 아래와 같은 창이 나오는데요. 아래에서 grovy를 체크(아래 사진에서 파란색바탕부분임. 아래사진은 안되어있지만 체크함.)했는데 체크 안하고 진행해야 하나요? 참고로 선생님 강의 44초에는 grovy 선택하는 구간이 나와서 저도 체크했어요.제화면 선생님 화면참고로 1. IDE에서 자동 생성 옵션 활성화 https://tychejin.tistory.com/340 이링크에 나와있는데로 세팅함.build.gradle을 아래처럼 세팅했습니다.위 방법 실행 후 ./gradlew clean build 이 명령어 실행프로젝트를 새로 열기 plugins { id 'java' id 'org.springframework.boot' version '3.3.9' id 'io.spring.dependency-management' version '1.1.7' } group = 'com.example' version = '0.0.1-SNAPSHOT' java { toolchain { languageVersion = JavaLanguageVersion.of(17) } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } tasks.named('test') { useJUnitPlatform() } sourceSets { main { java { srcDirs = ['src/main/java'] } resources { srcDirs = ['src/main/resources'] } } test { java { srcDirs = ['src/test/java'] } resources { srcDirs = ['src/test/resources'] } } }캐시 삭제 후 재 진행File → Invalidate Caches / Restart 클릭"Invalidate and Restart" 선택IntelliJ가 다시 시작되면 Gradle 탭에서 "Reload Gradle Project" 버튼(↻ 아이콘) 클릭참고로 인텔리제이 2021 얼티미디엇 버전입니다. 위에 파일 아래 메일로 보냈습니다. 혹시 문제점이 있는지 봐주실 수 있으신가요?jaytech108@gmail.com
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
인텔리제이에서 실행이 안됩니다..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. > Task :prepareKotlinBuildScriptModel UP-TO-DATECould not resolve: org.springframework.boot:spring-boot-starter-thymeleafCould not resolve: org.springframework.boot:spring-boot-starter-webCould not resolve: org.springframework.boot:spring-boot-starter-test[Incubating] Problems report is available at: file:///C:/hello-spring/build/reports/problems/problems-report.htmlDeprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.For more on this, please refer to https://docs.gradle.org/8.12.1/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.BUILD SUCCESSFUL in 1s이러한 오류가 떠ㅏ서 진행을 못하고 있습니다. 2일째 고생중인데 도와주세요
-
미해결웹소켓/STOMP 채팅서비스(spring, vue, redis)
아키텍처 질문입니다
이 아키텍처 기준으로 질문이 있습니다.client1번 -> LB -> 서버 -> 레디스 -> 서버 -> client2이런 식으로 메세지를 주고 받는다고 하셨는데,그렇다면 만약에 레디스 서버가 다운이 된다면client2번은 메세지를 못 받게 되는건가요?이런 경우는 어떻게 대비 해야 하나요?레디스는 서버 한대에만 구성 해놓나요?
-
미해결웹소켓/STOMP 채팅서비스(spring, vue, redis)
수업자료 한번에 다운받기
수업자료 한번에 다운 받고 싶은데요. 압축파일로 올려주실수 있나요?
-
미해결웹소켓/STOMP 채팅서비스(spring, vue, redis)
웹소켓,stomp 개념 질문 !
바로 이전 강의에서는 순수 웹소켓에서는 토큰인증 구현안하고 기능만 돌아가도록 했음 최종강의 목표는 (stomp에서 고도화 하는 것이므로)물론 할라면 할 수있음예시): 쿼리 파라미터 방식으로 토큰을 포함한 WebSocket 연결 그리고 WebSocket 자체는 HTTP 헤더를 설정하는 기능을 제공하지 않기 때문에 순수 웹소켓에서는 헤더에 인증 토큰을 추가할 수 없음. ............................................................................이번강의에서는 토큰인증 구현할때SockJS와 STOMP 같은 라이브러리를 사용하면 HTTP 헤더에 인증 정보를 포함시킬 수 있기에 헤더에 인증정보 포함 시켜 서버로 넘기는 식으로 구현 !그리고 뷰 메인에서 axios.interceptors.request.use( config => { const token= localStorage.getItem("token"); if(token){ config.headers['Authorization']=Bearer ${token} } return config; }, error => { return Promise.reject(error); })이런 식으로 추가 하는 것은 HTTP 요청에 한에서 이므로 별도임 stomp의 connection 은 HTTP 엔드포인트긴하지만 HTTP 요청이 아닌 ws 요청임 따라서 뷰 메인에서 가로채서 요청에 인증 정보 넣지 않음 따라서 connec t할때 직접 헤더에 넣어야 함 ..........................................................................................으로 이해했는데 맞을까요 ? 혹시 틀린 개념이나 빠진 부분이 있으면 알려주시면 감사하겠습니다!
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
이거 맞아요?
이런식으로 서비스 밑의 폴더 이어 붙이기 하고 article 따로 service 따로 서버 실행할수 있게 되면 그게 msa 기본 구조 잡아가는 과정인가요?지금 막 우당탕탕 이렇게 저렇게 막 코드 붙여가면서 되는거 같기는 한데 뭐 하고 있는지 헷갈리고 어지러워요
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
Spring Boot 프로젝트 세팅 2 강의 듣는데 따라 치기 너무 어렵
Spring Boot 프로젝트 세팅 2 강의 듣는데 따라 치기 너무 어렵
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
PK 전략에 관련해서 질문 드립니다!
안녕하세요. 만 1년된 작은 중소기업에서 일하고 있는 개발자입니다. 강의 잘 듣고 있습니다! 현재 회사에서는 오라클 데이터베이스를 사용하고 있고 최근 스프링부트와 JPA를 사용해서 프로젝트를 시작했고, 낡은 레거시 사업을 영위하는 업체라서 이게 회사의 첫 스프링부트 프로젝트입니다! 나름 새로운 기술스택을 제안했기에 가지는 부담감이 심한데요. 최근에 만든 거의 대부분의 프로젝트들은 단일 DB를 사용하고 있기 때문에 별다른 고민 없이 AutoIncrement를 선택했습니다. 오라클에서도 최신 버전에서는 잘 지원해주고 있고 DB 버전은 높았기 때문에 이에 익숙해서 JPA에서 지원하는 IDENTITY 전략을 사용해서 시스템을 만들었는데요. 현재 ID를 노출해야하는 상황이 생길 경우 이를 그대로 노출하고 있습니다. 다른 PK 전략을 사용하지 않고 보완할 수 있는 방법이 있을까요? 현재 떠오르는것은 외부로 노출할 때 컨트롤러에서 이를 해싱하거나 난수화를 하는 방법을 생각하고 있습니다. 감사합니다!
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
안녕하세요! 질문이 있습니다
안녕하세요. 강의 너무 잘 듣고 있습니다. 초장부터 이런식으로 질문드리는 거 안된다는 걸 잘알고 있지만 너무 죄송스럽게도 정말 도저히 모르겠는 부분이 있습니다.어차피 나중에 혼자 프로젝트도 진행해봐야 하니 저는 강의 자료가 아니고 직접 프로젝트를 만들어서 따라가보려고 start.io 페이지에서 만든 프로젝트를 인텔리제이에 불러오려고 했는데 빌드할 때 동기화 부분에서 실패합니다. 근데 이게 어떤 오류 메시지도 나오지 않고 저렇게 실패라고만 나와서 원인을 알기 어렵습니다. PC에 설치된 자바 버전 21로 3이상을 사용해야 하기 때문에 17이상으로 다시 설치했고 강의대로 따라했는데 혹시 강의 자료처럼 빌드가 완료되려면 강의 내용뿐만이 아니라 다른 설정이 더 필요한건가요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
Transactional Outbox 테스트 시간대 5:25
현재 카프카를 종료하고 API로 2개의 데이터를 넣고 다시 카프카를 켰을 때, delete 가 동작하지 않습니다.이전에 카프카를 켜놓은 상태에서 API 2개의 데이터 생성하는 경우는 바로 delete쿼리가 날라갔는데, 지금의 경우 어떤 부분에서 동작하지 않는지 잘 모르겠습니다. 따라서 압축 파일의 outbox-message-relay에 적으신 코드랑도 비교해봤는데, 동일하게 나오고 있습니다.일단 카프카를 종료하면 다음과 같은 에러가 나오는데, 강사님과 동일한 에러인지 궁금합니다. bernate: insert into article (board_id,content,created_at,modified_at,title,writer_id,article_id) values (?,?,?,?,?,?,?) Hibernate: update board_article_count set article_count = article_count + 1 where board_id = ? Hibernate: select bac1_0.board_id,bac1_0.article_count from board_article_count bac1_0 where bac1_0.board_id=? 2025-02-22T14:21:16.536+09:00 INFO 32925 --- [kuke-board-article-service] [nio-9000-exec-5] k.b.c.outboxmessagerelay.MessageRelay : [MessageRelay.createOutbox] outboxEvent=OutboxEvent(outbox=Outbox(outboxId=151558979476971520, eventType=ARTICLE_CREATED, payload={"eventId":151558979474350080,"type":"ARTICLE_CREATED","payload":{"articleId":151558979451625472,"title":"hi","content":"my content","boardId":1,"writerId":1,"createdAt":[2025,2,22,14,21,16,530575000],"modifiedAt":[2025,2,22,14,21,16,530575000],"boardArticleCount":9}}, shardKey=4, createdAt=2025-02-22T14:21:16.536478)) Hibernate: select o1_0.outbox_id,o1_0.created_at,o1_0.event_type,o1_0.payload,o1_0.shard_key from outbox o1_0 where o1_0.outbox_id=? Hibernate: insert into outbox (created_at,event_type,payload,shard_key,outbox_id) values (?,?,?,?,?) 2025-02-22T14:21:16.694+09:00 INFO 32925 --- [kuke-board-article-service] [ad | producer-1] org.apache.kafka.clients.NetworkClient : [Producer clientId=producer-1] Node 1 disconnected. 2025-02-22T14:21:16.694+09:00 WARN 32925 --- [kuke-board-article-service] [ad | producer-1] org.apache.kafka.clients.NetworkClient : [Producer clientId=producer-1] Connection to node 1 (localhost/127.0.0.1:9092) could not be established. Node may not be available. 2025-02-22T14:21:17.547+09:00 ERROR 32925 --- [kuke-board-article-service] [ mr-pub-event-3] k.b.c.outboxmessagerelay.MessageRelay : [MessageRelay.publishEvent] outboxEvent=Outbox(outboxId=151558979476971520, eventType=ARTICLE_CREATED, payload={"eventId":151558979474350080,"type":"ARTICLE_CREATED","payload":{"articleId":151558979451625472,"title":"hi","content":"my content","boardId":1,"writerId":1,"createdAt":[2025,2,22,14,21,16,530575000],"modifiedAt":[2025,2,22,14,21,16,530575000],"boardArticleCount":9}}, shardKey=4, createdAt=2025-02-22T14:21:16.536478) java.util.concurrent.TimeoutException: null at java.base/java.util.concurrent.CompletableFuture.timedGet(CompletableFuture.java:1960) ~[na:na] at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2095) ~[na:na] at kuke.board.common.outboxmessagerelay.MessageRelay.publishEvent(MessageRelay.java:46) ~[main/:na] at kuke.board.common.outboxmessagerelay.MessageRelay.publishEvent(MessageRelay.java:37) ~[main/:na] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na] at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:354) ~[spring-aop-6.1.11.jar:6.1.11] at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) ~[spring-aop-6.1.11.jar:6.1.11] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-6.1.11.jar:6.1.11] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[spring-aop-6.1.11.jar:6.1.11] at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:113) ~[spring-aop-6.1.11.jar:6.1.11] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[na:na] at java.base/java.lang.Thread.run(Thread.java:1583) ~[na:na] 2025-02-22T14:21:17.695+09:00 INFO 32925 --- [kuke-board-article-service] [ad | producer-1] org.apache.kafka.clients.NetworkClient : [Producer clientId=producer-1] Node 1 disconnected. 2025-02-22T14:21:17.695+09:00 WARN 32925 --- [kuke-board-article-service] [ad | producer-1] org.apache.kafka.clients.NetworkClient : [Producer clientId=producer-1] Connection to node 1 (localhost/127.0.0.1:9092) could not be established. Node may not be available. 2025-02-22T14:21:18.697+09:00 INFO 32925 --- [kuke-board-article-service] [ad | producer-1] org.apache.kafka.clients.NetworkClient : [Producer clientId=producer-1] Node 1 disconnected. 2025-02-22T14:21:18.697+09:00 WARN 32925 --- [kuke-board-article-service] [ad | producer-1] org.apache.kafka.clients.NetworkClient : [Producer clientId=producer-1] Connection to node 1 (localhost/127.0.0.1:9092) could not be established. Node may not be available. Hibernate: select a1_0.article_id,a1_0.board_id,a1_0.content,a1_0.created_at,a1_0.modified_at,a1_0.title,a1_0.writer_id from article a1_0 where a1_0.article_id=? Hibernate: insert into article (board_id,content,created_at,modified_at,title,writer_id,article_id) values (?,?,?,?,?,?,?) Hibernate: update board_article_count set article_count = article_count + 1 where board_id = ? Hibernate: select bac1_0.board_id,bac1_0.article_count from board_article_count bac1_0 where bac1_0.board_id=? 2025-02-22T14:21:19.531+09:00 INFO 32925 --- [kuke-board-article-service] [nio-9000-exec-7] k.b.c.outboxmessagerelay.MessageRelay : [MessageRelay.createOutbox] outboxEvent=OutboxEvent(outbox=Outbox(outboxId=151558992038912000, eventType=ARTICLE_CREATED, payload={"eventId":151558992036290560,"type":"ARTICLE_CREATED","payload":{"articleId":151558992013565952,"title":"hi","content":"my content","boardId":1,"writerId":1,"createdAt":[2025,2,22,14,21,19,525215000],"modifiedAt":[2025,2,22,14,21,19,525215000],"boardArticleCount":10}}, shardKey=4, createdAt=2025-02-22T14:21:19.531129)) Hibernate: select o1_0.outbox_id,o1_0.created_at,o1_0.event_type,o1_0.payload,o1_0.shard_key from outbox o1_0 where o1_0.outbox_id=? Hibernate: insert into outbox (created_at,event_type,payload,shard_key,outbox_id) values (?,?,?,?,?) 2025-02-22T14:21:19.699+09:00 INFO 32925 --- [kuke-board-article-service] [ad | producer-1] org.apache.kafka.clients.NetworkClient : [Producer clientId=producer-1] Node 1 disconnected. 2025-02-22T14:21:19.699+09:00 WARN 32925 --- [kuke-board-article-service] [ad | producer-1] org.apache.kafka.clients.NetworkClient : [Producer clientId=producer-1] Connection to node 1 (localhost/127.0.0.1:9092) could not be established. Node may not be available. 2025-02-22T14:21:20.544+09:00 ERROR 32925 --- [kuke-board-article-service] [ mr-pub-event-4] k.b.c.outboxmessagerelay.MessageRelay : [MessageRelay.publishEvent] outboxEvent=Outbox(outboxId=151558992038912000, eventType=ARTICLE_CREATED, payload={"eventId":151558992036290560,"type":"ARTICLE_CREATED","payload":{"articleId":151558992013565952,"title":"hi","content":"my content","boardId":1,"writerId":1,"createdAt":[2025,2,22,14,21,19,525215000],"modifiedAt":[2025,2,22,14,21,19,525215000],"boardArticleCount":10}}, shardKey=4, createdAt=2025-02-22T14:21:19.531129) java.util.concurrent.TimeoutException: null at java.base/java.util.concurrent.CompletableFuture.timedGet(CompletableFuture.java:1960) ~[na:na] at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2095) ~[na:na] at kuke.board.common.outboxmessagerelay.MessageRelay.publishEvent(MessageRelay.java:46) ~[main/:na] at kuke.board.common.outboxmessagerelay.MessageRelay.publishEvent(MessageRelay.java:37) ~[main/:na] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na] at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:354) ~[spring-aop-6.1.11.jar:6.1.11] at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) ~[spring-aop-6.1.11.jar:6.1.11] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-6.1.11.jar:6.1.11] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768) ~[spring-aop-6.1.11.jar:6.1.11] at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:113) ~[spring-aop-6.1.11.jar:6.1.11] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[na:na] at java.base/java.lang.Thread.run(Thread.java:1583) ~[na:na] 카프카 종료후 다시 연결해도 폴링은 되는ㄴ데 select만 하고 있고 기존에 outbox에 남아있는 2개의 데이터는 delete처리가 되지 않고 있습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]h2 데이터베이스 연결하기 위해 다음과 같이 했는데 오류가 발생하고 접근이 안됩니다.프로젝트 위치는 E:\study\jpashop 여기입니다.어떤 설정을 해줘야하나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
엔티티와 dto에 대해 궁금한점이 있습니다
안녕하세요!엔티티와 dto에 대해 궁금한점이 생겨 질문드립니다!강의를보면 엔티티에 연관관계메서드와 로직 등 관련된 메서드를 작성하셨는데요그리고 엔티티는 외부에 노출되면 안된다라고 언급하셨는데그렇다면 엔티티를 직접쓰는게아닌 DTO를 따로 작성해서 사용하는건가요?(1번의 질문이 맞는질문이라면)그럼 엔티티에 10개의 필드들이 있고, 각각 조회용으로 6개의 필드, 수정용으로 8개의 필드가 필요하다고 가정하면 DTO를 조회용과 수정용 두개를 만들어야할까요?이건 좀 번외인거같긴하지만.... 지금까지 공부하면서 엔티티에 빌더패턴을 적용해왔는데요. 외부에 엔티티가 노출되지않으려면 DTO를 써야하고, 그렇다면 엔티티에 빌더패턴을 써야하는게아니라 DTO에 빌더패턴을 써야하는걸까요?
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
Querydsl 검색처리에서 테스트 결과가 잘 안 나오는 거 같습니다
로직 작성하고 테스트 실행해봤는데 카운트 쿼리까지는 실행된 거 같은데 todoDTO의 결과가 표시되지 않네요하단에 있는 실행 결과를 봐주시고 답변을 해주시면 감사드리겠습니다 혹시 더 필요한 게 있으시면 말씀해 주세요 > Task :clean> Task :compileJava> Task :processResources> Task :classes> Task :compileTestJava> Task :processTestResources NO-SOURCE> Task :testClasses11:41:34.918 [Test worker] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils -- Could not detect default configuration classes for test class [org.zerock.apiserver.service.TodoServiceTests]: TodoServiceTests does not declare any static, non-private, non-final, nested classes annotated with @Configuration.11:41:34.987 [Test worker] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper -- Found @SpringBootConfiguration org.zerock.apiserver.ApiserverApplication for test class org.zerock.apiserver.service.TodoServiceTests . ____ _ __ _ _ /\\ / ___'_ __ _ ()_ __ __ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.4.1)2025-02-22T11:41:35.222+09:00 INFO 10348 --- [apiserver] [ Test worker] o.z.apiserver.service.TodoServiceTests : Starting TodoServiceTests using Java 21.0.5 with PID 10348 (started by zzamp in C:\Users\zzamp\Desktop\apiserver\apiserver)2025-02-22T11:41:35.223+09:00 INFO 10348 --- [apiserver] [ Test worker] o.z.apiserver.service.TodoServiceTests : No active profile set, falling back to 1 default profile: "default"2025-02-22T11:41:35.536+09:00 INFO 10348 --- [apiserver] [ Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.2025-02-22T11:41:35.578+09:00 INFO 10348 --- [apiserver] [ Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 35 ms. Found 1 JPA repository interface.2025-02-22T11:41:35.798+09:00 INFO 10348 --- [apiserver] [ Test worker] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]2025-02-22T11:41:35.837+09:00 INFO 10348 --- [apiserver] [ Test worker] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.6.4.Final2025-02-22T11:41:35.858+09:00 INFO 10348 --- [apiserver] [ Test worker] o.h.c.internal.RegionFactoryInitiator : HHH000026: Second-level cache disabled2025-02-22T11:41:36.016+09:00 INFO 10348 --- [apiserver] [ Test worker] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer2025-02-22T11:41:36.033+09:00 INFO 10348 --- [apiserver] [ Test worker] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...2025-02-22T11:41:36.084+09:00 INFO 10348 --- [apiserver] [ Test worker] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection org.mariadb.jdbc.Connection@7e1d8d412025-02-22T11:41:36.085+09:00 INFO 10348 --- [apiserver] [ Test worker] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.2025-02-22T11:41:36.116+09:00 INFO 10348 --- [apiserver] [ Test worker] org.hibernate.orm.connections.pooling : HHH10001005: Database info: Database JDBC URL [Connecting through datasource 'HikariDataSource (HikariPool-1)'] Database driver: undefined/unknown Database version: 10.11.10 Autocommit mode: undefined/unknown Isolation level: undefined/unknown Minimum pool size: undefined/unknown Maximum pool size: undefined/unknown2025-02-22T11:41:36.523+09:00 INFO 10348 --- [apiserver] [ Test worker] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)2025-02-22T11:41:36.558+09:00 INFO 10348 --- [apiserver] [ Test worker] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'2025-02-22T11:41:36.897+09:00 WARN 10348 --- [apiserver] [ Test worker] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning2025-02-22T11:41:37.114+09:00 INFO 10348 --- [apiserver] [ Test worker] o.z.apiserver.service.TodoServiceTests : Started TodoServiceTests in 2.018 seconds (process running for 2.672)Mockito is currently self-attaching to enable the inline-mock-maker. This will no longer work in future releases of the JDK. Please add Mockito as an agent to your build what is described in Mockito's documentation: https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#0.3WARNING: A Java agent has been loaded dynamically (C:\Users\zzamp\.gradle\caches\modules-2\files-2.1\net.bytebuddy\byte-buddy-agent\1.15.11\a38b16385e867f59a641330f0362ebe742788ed8\byte-buddy-agent-1.15.11.jar)WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warningWARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more informationWARNING: Dynamic loading of agents will be disallowed by default in a future release2025-02-22T11:41:37.366+09:00 INFO 10348 --- [apiserver] [ Test worker] o.z.a.repository.search.TodoSearchImpl : search1.................Hibernate: select t1_0.tno,t1_0.complete,t1_0.content,t1_0.due_date,t1_0.title from tbl_todo t1_0 order by t1_0.tno desc limit ?,?Hibernate: select count(t1_0.tno) from tbl_todo t1_02025-02-22T11:41:37.646+09:00 INFO 10348 --- [apiserver] [ Test worker] o.z.apiserver.service.TodoServiceTests : org.zerock.apiserver.dto.PageResponseDTO@11f81488Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended2025-02-22T11:41:37.658+09:00 INFO 10348 --- [apiserver] [ionShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'2025-02-22T11:41:37.659+09:00 INFO 10348 --- [apiserver] [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...2025-02-22T11:41:37.662+09:00 INFO 10348 --- [apiserver] [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.> Task :testBUILD SUCCESSFUL in 5s5 actionable tasks: 5 executed오전 11:41:37: 실행이 완료되었습니다 ':test --tests "org.zerock.apiserver.service.TodoServiceTests.testGetList"'.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
2시간동안 막혀있습니다. 도와주세요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]여기에 질문 내용을 남겨주세요.localhost:8080에 접속은 되는데 회원가입누르고 이름적고 등록누르면 Whitelabel Error Page가 뜨고 회원 목록을 눌로도 Whitelabel Error Page가 뜹니다.. 뭐가 문제일까요? h2db도 정상적으로 실행이 되는데 회원가입에서 등록을 눌러도 db에 값이 저장되지 않네요
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
여러 개의 일대다 연관 관계 필드를 포함하는, 복잡한 DTO에 대한 최선의 쿼리 구현 방법이 있을까요..?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? - 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? - 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? - 예[질문 내용]안녕하세요! 마치 학교 선배가 옆에서 가르쳐주는 것과 같은 친근한 스타일의 강의 덕분에 백엔드 개발에 좀 더 가까워지는 느낌을 받고 있습니다! 다름이 아니라, 복잡한 구조를 가진 단일 엔티티 조회(DTO 프로젝션) API 개발 관련 질문이 있습니다! class MemberDto { private Long id; private String username; private String imageUrl; // 사용자가 작성한 총 게시물 수 private Long postCount; } // Post와 Hashtag는 다대다 연관 관계 - PostHashtag 중간 엔티티(중간 테이블) 추가 정의 class HashtagDto { private Long id; private String name; } // Post와 Category는 다대다 연관 관계 - PostCategory 중간 엔티티(중간 테이블) 추가 정의 class CategoryDto { private Long id; private String name; } // API로 조회를 제공하려는 대상 - 사용자(Member)가 작성할 수 있는 게시물. class PostDto { private Long id; private MemberDto member; private String title; private String body; private List<HashtagDto> hashtags; private List<CategoryDto> hashtags; } 여러 개(해시태그, 카테고리)의 컬렉션으로 데이터(도메인/엔티티)가 구성돼있을 때,PostDto findById(Long id)위와 같이 ID에 대한 게시물의 상세 정보를 조회하는 리포지토리 계층(PostRepository 같은 클래스)에서의 쿼리 메서드는 강의에서 말씀주신 것을 따르면, (컬렉션에 대한 페치 조인은 1번으로 제한되기에)Post 및 Post와 xToOne 연관 관계인 Member를 페치 조인으로 조회하는 쿼리Post와 xToMany 연관 관계인 모든 Hashtag를 Post.id로 조회하는 쿼리Post와 xToMany 연관 관계인 모든 Category를 Post.id로 조회하는 쿼리n개의 컬렉션이 있을 때 위와 같은 식으로 Post, Member를 제외한 n개의 컬렉션에 대한 n번의 쿼리를 실행해서, 마지막에 Dto로 조립하는 게 최선일까요? 한 방 쿼리(?)를 위해 DTO로 프로젝션하는 방식을 찾아보니, QueryDSL의 transform, groupBy, list 같은 것을 써서 구현한 개발한 블로그가 있긴 하던데, 막상 코드를 실행하니 안 되는 경우가 많더라고요..!실무에서도 위와 같이 여러 복잡한 xToMany 연관 관계 필드가 포함된 DTO를 조회하는 경우가 많을 것 같은데, 주로 어떤식으로 쿼리가 짜여지는지 궁금합니다!
-
해결됨코드로 배우는 React 19 with 스프링부트 API서버
섹션4 조회기능 질문입니다.
선생님, 덕분에 하루하루 조금씩 성장하고 있습니다. 감사힙니다섹션 4 조회 기능을 실행하면 아래와 같이 나오는데 해결 방법을 알고 싶습니다. x를 누르면 정상으로 보입니다. 건강하시기를 바랍니다. 감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
findByname() 테스트 질문 입니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의에서 클레스레벨 테스트를 돌렸을때 findAll() -> findByName() -> save() 를 순으로 실행돼 Member result = repository.findByName("spring1").get(); 오류가 났습니다 findByName()이 루프를 도는건데 hashMap이 순서를 보장하지 않으니깐 true로 나올 수 도 있는걸까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 build 경로 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.윈도우 빌드 시 경로가 onedrive\바탕화면\study 폴더인데명령창에서 경로를 찾을 수 없다고 나오는데 어떻게 해야 해결할 수 있을까요?
-
해결됨개발자에게 필요한 로그 관리
컴파일 단계에서 발생하는 문법 오류에 대한 에러 정의 질문
안녕하세요! 예외와 로그 강의 보던 중에 궁금한 점이 생겨 질문드립니다. 체크드 예외와 언체크드 예외 설명 과정에서, 컴파일 단계에서 발생하는 것은 예외가 아니라 문법 오류로 인한 에러라고 말씀해주셨습니다. 제가 이해하고 있는 에러 정의는프로그램에서 복구할 수 없는 심각한 문제입니다. 단순 문법 오류를 에러라고 이해해도되는건지 궁금하여 질문 남겨봅니다..! 감사합니다