학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6y gx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴 얼 링크: https://bit.ly/2Ufe qCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. 우선 회원 서비스 테스트 부분 까지 강의를 듣다가 궁금한 점이 생겨 문의 드립니다. 1. MemberRepository 인터페이스를 상속하는 MemoryMemberRepository에서 store라는 이름을 가진 map에 각 반환값들 저장 2. 그 후 MemberService에서 "private final MemberRepository memberRepository;" 인터페이스 사용 및 생성자 주입 방식을 통해 DI를 구현하는 것 까지는 알겠는데, 아래 회원가입 및 전체 회원 조회 시 사용되는 memberRepository.save(member); 혹은 memberRepository.findAll(); 여기서 말하는 memberRepository가 인터페이스 자체에서 값을 불러오고 거기에 저장이 되는건지, 정확히 무엇인지 궁금합니다. 여기까지 제가 이해한 내용이 맞는지 궁금하기도 하고, 2번 부분에서 memberRepository가 정확히 어디에 저장이 되고 데이터가 불러와지는지가 궁금합니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 위와 같은 오류가 발생해서 인터넷을 찾던 중 아래와 같이 설정을 했는데도 같은 오류가 발생합니다. 혹시 이건 어떤 문제인가요? 감사합니다.
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
application.yml 작성시 driver-class-name : 에서 사용할 sql불러오는 코드 com.mysql.cj.jdbc.Driver 라는 걸쓰는데 아무것도 불러와지질않네요 다른분들은 오류라도 뜨는데 저는 오류도안떠서 다음 진행이 안되고있는데 어떻게 해야 할까요? 다른분께 말씀하신 gradle에 들어가서 의존성도 확인하고 새로고침도 확인 했습니다.
plugins { id 'java' id 'org.springframework.boot' version '3.2.2' id 'io.spring.dependency-management' version '1.1.4' } group = 'hello' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' // implementation 'org.springframework.boot:spring-boot-starter-jdbc' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'com.h2database:h2' testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('test') { useJUnitPlatform() } 자바 17 로 잘되어있고 한데 자꾸 무슨 21이 보이고 웹에서는 정상 작동 하는데 테스트에서만 문제가 발생합니다. 해결 부탁드립니다. ㅠㅠ WARNING: A Java agent has been loaded dynamically (C:\Users\ㅋㅋ\.gradle\caches\modules-2\files-2.1\net.bytebuddy\byte-buddy-agent\1.14.11\f9cb566608fbac6bc7bf54901a7aa11543a989ee\byte-buddy-agent-1.14.11.jar) WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warning WARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more information WARNING: Dynamic loading of agents will be disallowed by default in a future release 2024-01-31T22:27:28.360+09:00 WARN 3716 --- [ main] o.s.test.context.TestContextManager : Caught exception while invoking 'beforeTestMethod' callback on TestExecutionListener [org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener] for test method [public void hello.hellospring.sevice.MemberServiceIntegrationTest.회원가입() throws java.lang.Exception] and test instance [hello.hellospring.sevice.MemberServiceIntegrationTest@7901a5ab] java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker (alternate: null) at org.mockito.internal.configuration.plugins.PluginLoader$1.invoke(PluginLoader.java:84) ~[mockito-core-5.7.0.jar:na] at jdk.proxy2/jdk.proxy2.$Proxy112.getHandler(Unknown Source) ~[na:na] at org.mockito.internal.util.MockUtil.getMockHandlerOrNull(MockUtil.java:158) ~[mockito-core-5.7.0.jar:na] at org.mockito.internal.util.MockUtil.isMock(MockUtil.java:147) ~[mockito-core-5.7.0.jar:na] at org.mockito.internal.util.DefaultMockingDetails.isMock(DefaultMockingDetails.java:32) ~[mockito-core-5.7.0.jar:na] at org.springframework.boot.test.mock.mockito.MockReset.get(MockReset.java:106) ~[spring-boot-test-3.2.2.jar:3.2.2] at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:85) ~[spring-boot-test-3.2.2.jar:3.2.2] at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:73) ~[spring-boot-test-3.2.2.jar:3.2.2] at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.before:na] at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.create(DefaultMockitoPlugins.java:103) ~[mockito-core-5.7.0.jar:na] ... 67 common frames omitted Caused by: org.mockito.exceptions.base.MockitoInitializationException: Could not initialize inline Byte Buddy mock maker. It appears as if your JDK does not supply a working agent attachment mechanism. Java : 21 JVM vendor name : Oracle Corporation JVM vendor version : 21.0.1+12-29 JVM name : OpenJDK 64-Bit Server VM JVM version : 21.0.1+12-29 JVM info : mixed mode, sharing OS name : Windows 10 OS version : 10.0 at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.<init>(InlineDelegateByteBuddyMockMaker.java:260) ~[mockito-core-5.7.0.jar:na] at org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.<init>(InlineByteBuddyMockMaker.java:23) ~[mockito-core-5.7.0.jar:na] at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) ~[na:na] ... 70 common frames omitted Caused by: java.lang.IllegalArgumentException: null at java.instrument/sun.instrument.InstrumentationImpl.appendToClassLoaderSearch0(Native Method) ~[na:na] at java.instrument/sun.instrument.InstrumentationImpl.appendToBootstrapClassLoaderSearch(InstrumentationImpl.java:280) ~[na:na] at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.<clinit>(InlineDelegateByteBuddyMockMaker.java:177) ~[mockito-core-5.7.0.jar:na] ... 72 common frames omitted 2024-01-31T22:27:28.368+09:00 WARN 3716 --- [ main] o.s.test.context.TestContextManager : Caught exception while invoking 'afterTestMethod' callback on TestExecutionListen
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 저는 member_id가 1 부터 시작했는데 혹시 이유를 알 수 있을까요? 그리고 왜 member_id 가3 부터 시작하는 이유가 궁금합니다
keycloak 버전이 제일 낮은 게 20 버전이라서 저는 가장 최근 버전인 23 버전으로 사용했습니다. 23 버전 기준으로, 제가 파악한, 강의와 다른 부분입니다. 20 버전부터는 최초 로그인 할 때 동의 항목이 안 나올텐데요. 관리자 콘솔에서 Clients -> Cliend details에서 Login settings에서 Consent required를 켜면 됩니다. 엑세스 토큰 발급 이후에 userinfo 엔드포인트로 user 데이터를 요청하면 body에 아무 것도 안 나올 겁니다. 응답 헤더 살펴보면 insufficient_scope이며 Missing openid scope이라고 나오는데요. 이렇게만 써있으면 userinfo 요청할 때 param에 scope=openid 넣으면 될 것 같지만 안 됩니다. 토큰에 해당 정보가 없는 거라서, 토큰 발급 전에(code 얻어야할 때) scop에 openid를 추가하면 됩니다. http://localhost:8080/realms/oauth2/protocol/openid-connect/auth?response_type=code&client_id=oauth2-client-app&scope=profile email openid&redirect_uri=http://localhost:8081 공식문서 에 나와 있습니다. In case an access token is missing openid scope.
분명 강의중에 설명해주셨던 내용같은데,,, 넓은 범위를 복습하다보니 내용을 찾기가 어려워서 잘문 남깁니다. 강의 내용에서는 주문을 생성할 때, orderService 계층의 order() 메서드를 호출하여 orderItem 을 생성하고, 이는 내부적으로 createOrder 를 다시 호출해서 디비에 저장되는 식으로 코드를 짰습니다. 그런데 문득 클라이언트 단에서(예를 들어 controller 계층에서) order.createOrder 를 직접 접근하면 어떤 문제들이 있을지가 궁금해졌습니다. 예릃 들어 아래 제 테스트 코드 처럼요. 이런 설계가 안좋아보이긴 하나, 마땅히 생각나는 문제가 없어서 질문드립니다. @Test @DisplayName("Direct access thru Order Domain") @Transactional @Rollback(value = false) public void directAccess(){ Item bread = new Bread( "red bean", 100, 2000, "a", BreadSize.LARGE ); itemService.createItem(bread); Order order = new Order(); orderService.createOrder(order); OrderItem orderItem = OrderItem.createOrderItem1(bread, bread.getItemPrice(), 20); order.addOrderItem1(orderItem); }
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
선생님 안녕하세요? 강의 잘듣고 있습니다. 다름이 아니라 10강에서 MySQL 접근 방법1를 따라하려고 하는데 Datebase이 없더라고요... 버전이 달라서 그런건가 싶어서 따로 찾아보니까 view-Tool Windows안에서 보통 선택할 수 있다는걸 발견했는데 여기에도 없더라고요... 이런 경우에는 다시 설치하는 것 말고는 방법이 없는거겠죠...?
안녕하세요! 강의 잘 보고 있습니다. topic에 입력시, 오타가 있는 스크립트를 입력했는데, 해당 오타가 있는 레코드가 지속적으로 남아 있더군요, 또한 이로 인해 jsonParser 오류가 발생해서, topic을 삭제할까 하다가, 윈도우 기반에서는 오류가 발생할 수 있다고 ( https://www.inflearn.com/questions/644825 ) 하여, topic의 오타가 있는 레코드를 삭제하고자 합니다. 혹시 방법이 있을까요??
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
아마존 리눅스 2023으로 인스턴스를 사용했을 때 지면님과 강사님께서 알려준 el9 버전 레포지토리를 사용하는 명령어 sudo dnf install <https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm> sudo dnf install mysql-community-server 이렇게 하여도 저는 계속 sudo dnf install mysql-community-server 해당 명령어를 통해 설치하려고 하면 The GPG keys listed for the "MySQL 8.0 Community Server" repository are already installed but they are not correct for this package. 이런 오류가 발생하였습니다. 계속 키가 옳지 않다는 오류가 생겼고 챗지피티랑 구글링을 통해 이것저것 해보다가 sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 sudo yum update 위의 두 명령어를 실행하고 sudo dnf install mysql-community-server 해당 명령어로 재설치 해주니 제대로 설치가 되었습니다! 제 추측으로는 KEY를 다시 받아오고 yum update 하는 과정이 필요했던 것 같습니다! 저와 같은 오류를 가지는 분들에게 도움이 되었으면 좋겠네요...!!!
강의와 같은 버전으로 모두 같게 진행하지 않아서 그런지.. windows 타겟을 찾을 수가 없습니다. 전에 AI가 알려준 건 도움이 되질 않았어요 분명 prometheus 타겟은 잡힌 것으로 봐서는 app 폴더 내부로 들어가서 prometheus.yml 파일도 잘 읽은 것 같은데요.. 왜 그대ㅑ로 아래에 job_name이 windows인 것은 왜 설정이 안 되는지 모르겠습니다..
안녕하세요, kafka source connect 등록할 때 mariadb가 연결이 잘 안되서 h2 db로 진행을 했습니다. 등록 후 kafka connect status를 보면 tasks가 빈 배열로 나오네요,, CLI에서는 마지막에 tables were not found라고 나오는데 테이블이 있는데도 없다고 하는데 혹시 이런 증상 해결하신 분 계실까요?
안녕하세요 영한님! 강의를 듣던 중 궁금한 점이 생겨서 질문 남깁니다. 프로젝트를 진행하며 Spring Data JPA를 사용하면서 Entity를 update 하는 방법에 대해서 고민이 생겼습니다. findById를 한 후 save() 메서드를 호출하는 방법과 public Post updatePost(long postId, PostUpdateRequest request) { Post post = findById(postId); post.update(request.getTitle(), request.getContent()); return postRepository.save(post); } 영한님이 말씀하신 dirty checking 을 이용하는 방법 중 어떤게 더 나은 방법인지 궁금해서요. @Transactional public void updatePost(long postId, PostUpdateRequest request) { Post post = findById(postId); post.update(request.getTitle(), request.getContent()); } spring data jpa 의 save() 메서드의 경우 새로운 엔티티일땐 em.persist() 존재하는 엔티티일땐 em.merge() 방식으로 동작한다고 알고 있습니다. findById를 통해 엔티티를 조회해서 영속상태로 만든 후 em.merge를 하게 된다면 dirty checking을 통해 엔티티를 update하는 것과 어떤 차이가 있는건지 궁금합니다. @Transactional을 사용해서 리소스를 사용하는것 보단, save 메서드 호출을 통해 em.merge()를 사용하는게 더 나은 방법이 아닌지, 혹은 update 하는 동안의 트랜잭션은 큰 리소스 사용 없이 동작하기 때문에 dirty checking을 사용하라고 하신 것인지 궁금합니다!
혹시 삭제버튼도 모달로 등록해서 삭제를 할 순없는건가요? 그러면 document.querySelectorAll 을 쓰지않아도 되는거 아닌가요? 추가로 // 삭제 버튼 이벤트를 처리 commentDeleteBtns.forEach(btn => { // 각 버튼의 이벤트 처리를 등록 btn.addEventListener("click", (event) => { // 이벤트 발생 요소를 선택 const commentDeleteBtn = event.target; // 삭제 댓글 id 가져오기 const commentId = commentDeleteBtn.getAttribute("data-comment-id"); console.log(`삭제 버튼 클릭: ${commentId}번 댓글`); }); }); 해당 코드에서 event.relatedTarget이란 함수를 쓰지않는이유는 relatedTarget함수가 모달 전용이라서 그런건가요?