묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
중복_회원_예외 에서 예외가 안터지는 문제 + 터미널에서 해보세요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]선생님 질문이 있는데요중복 회원 예외에서예외가 안터지고 그냥 테스트를 성공해버립니다 뭐가 문제일까요? 아래 구글 드라이브 링크 걸어뒀습니다.@Test public void 중복_회원_예외() throws Exception { //given Member member1 = new Member(); member1.setName("kim"); Member member2 = new Member(); member2.setName("kim"); //when memberService.join(member1); memberService.join(member2); //then fail("예외가 발생해야 한다."); }예외가 발생하지 않습니다. 코드 압축해서 드라이브에 올렸습니다. https://inf.run/CFDK6
-
미해결실전! 스프링부트 상품-주문 API 개발로 알아보는 TDD
DatabaseCleanup 코드입니당 필요한 분들 쓰세요
package com.clarity.productorderservice; import java.util.List; import java.util.Set; import java.util.stream.Collectors; import javax.persistence.Entity; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Table; import javax.persistence.metamodel.EntityType; import org.springframework.beans.factory.InitializingBean; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import com.google.common.base.CaseFormat; @Component public class DatabaseCleanup implements InitializingBean { @PersistenceContext private EntityManager entityManager; private List<String> tableNames; @Override public void afterPropertiesSet() { final Set<EntityType<?>> entities = entityManager.getMetamodel().getEntities(); tableNames = entities.stream() .filter(e->isEntity(e)&&hasTableAnnotation(e)) .map(e->e.getJavaType().getAnnotation(Table.class).name()) .collect(Collectors.toList()); final List<String> entityNames = entities.stream() .filter(e -> isEntity(e) && !hasTableAnnotation(e)) .map(e -> CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, e.getName())) .toList(); } private boolean isEntity(EntityType<?> e) { return null != e.getJavaType().getAnnotation(Entity.class); } private boolean hasTableAnnotation(EntityType<?> e) { return null != e.getJavaType().getAnnotation(Table.class); } @Transactional public void execute() { entityManager.flush(); entityManager.createNativeQuery("SET REFERENTIAL_INTEGRITY FALSE").executeUpdate(); for (final String tableName : tableNames) { entityManager.createNativeQuery("TRUNCATE TABLE " + tableName).executeUpdate(); entityManager.createNativeQuery("ALTER TABLE " + tableName + " ALTER COLUMN ID RESTART WITH 1").executeUpdate(); } entityManager.createNativeQuery("SET REFERENTIAL_INTEGRITY TRUE").executeUpdate(); } }
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
해결은 못했습니다만...
거듭된 질문에 한결같이 답변을 해주셔서 감사합니다.교재 9장까지는 문제없이 잘 진행되어서, 10장 부터 새로 작성한, 엔티티, DTO, Repository 싹 다 지우니, 앞서 작성한 테스트는 그나마 제대로 실행이 되는군요. 다시 엔티티부터 하나씩 깔면서, 동시에 테스트를 다시 진행해봐야 겠습니다.
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
testInsertByProduct() 와 관련된 에노테이션은 교재하고 똑같이 했고, log.info만 남기고 나머지 코드는 다 지웠는데도, 여전히 Test Failed가 뜨고, testInsertProduct() 메소드로 진입조차 안되는 군요.
testInsertByProduct() 와 관련된 에노테이션은 교재하고 똑같이 했고, log.info만 남기고 나머지 코드는 다 지웠는데도, 여전히 Test Failed가 뜨고, testInsertProduct() 메소드로 진입조차 안되는 군요.
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
CartRepositoryTests.java 에서 테스트 실행을 시켰더니 tests failed 가 뜹니다.
교재를 똑같이 따라왔는데, testInsertByProduct()에서 tests failed 메시지가 뜨는 군요.서버코드는 cookie_00@naver.com으로 첨부했습니다.
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
testInsertByProduct()에 아예 들어가지를 못하네요...
교재 9장까지 잘 따라왔습니다.10장 장바구니 api 만들기에 들어와서 CartRepository 만들고CartItemRepository를 만들고CartRepositoryTests를 만들었습니다.그리고, testInsertByProduct()를 테스트 하는데,Tests failed 가 나왔습니다.코드 몇 군데에서 로그를 확인해봤는데, configuration 부분은 잘 통과했는데, testInsertByProduct() 메소드로는 진입조차 못하고 있습니다.실습환경은 "인텔리제이" 입니다. 아래 캡쳐는, 에러가 시작되는 경계로 생각되는 부분입니다.질문 내용이, 답변 주시기에 좀 부족하다면, 더 필요한 코드 부분이나, 에러로그를 보충해서 다시 질문에 올리도록 하겠습니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
Transactional Outbox 모듈 적용에서 빈이 실습과 다릅니다
안녕하세요다름이 아니라 application.yaml에서 설정값 모두 맞추고, gralde 빌드도 되었습니다그런데 ArticleApplication 실행하는 부분부터 강의와 다르게 정상실행이 되고, ArticleService에서 OutboxEventPublisher 빈을 못 찾고 있습니다outbox-message-relay 패키지 내 설정값 혹은 어노테이션 살펴봐도 감이 잘 오지 않습니다지식공유자님의 코드와 샅샅이 차이점을 찾으려 했으나, 차이는 메세지릴레이 부분 뿐이었습니다 위 빈 문제를 해결하기 위해서 어느 부분을 확인하면 될 지 여쭤보려 합니다
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
강의 버전 정보
프로그램 버전 정보가 없는데 어디서 찾아요?
-
해결됨Spring Boot를 활용하여 채팅 플랫폼 만들어보기
MySQLConfig 관련 질문있습니다.
선생님께서 말씀을 조금 두루뭉술하게 해주셔서인지 ㅠㅠ 다들 궁금해 하시는거같은데 저또한 궁금한 부분들이 있습니다. JPA에서 처음부터 트랜잭션 매니저 구현체로 JpaTransactionManager를 사용하지 않고 auth쪽은 DataSourceTransactionManager를 사용한건 왜 그런건가요?AuthService#createUser()부분에서는 일반 JDBC 기반의 DataSourceTransactionManager를 사용하셨더라구요.이러한 경우 영속성 컨텍스트에서 Entity들의 생명주기까지는 관리가 안되는걸로 알고 있습니다. Lazy Loading이나 Dirty Check 등..채팅관련 트랜잭션 설정할때에는 구체적으로 어떤 메커니즘에 의해 어떤 문제가 발생할 수 있는지 명확히 알려주실 수 있을까요? 제가 몇 번 돌려서 듣긴 했는데 느낌이 STOMP 통신 특성상 발생되는 이슈라고 이해는 한 것 같은데 그게 구체적으로 어떠 어떠한 이유로 오류가 발생한다?혹은 할수도 있다? 는것인지 이해를 못했습니다. 확실히 무조건 오류가 발생을 한다는걸까요? 그리고 그 원인은 무엇일까요?단순히 JPA를 이용한 비즈니스 로직을 작성할때는 JpaTransactionManager가 관리하는 트랜잭션 내에서 작성하자. 그리고 그러기 위해서 createChatTransacationMansger를 사용하자. 라고 이해해도 될까요?JpaRepository 구현체인 SimpleJpaRepository에는 기본적으로 save()에는 트랜잭션이 걸려 있지만 저장 이후에 Entity 조작하는 로직이 있다면 동작하지 않게 되니까요.. 혹시 일반적인 JPA 환경과 별개로 STOMP를 통한 웹소켓 통신 환경에서의 JPA 트랜잭션 처리에 대해 특이사항이 있었던거라면 자세히 설명좀 부탁드려도 될까요? 예를 들어 일반 MVC 프레임웍의 http 통신 환경일때는 스레드 또한 톰캣의 스레드를 사용하지만 STOMP는 환경이 달라서 뭔가 신경써야 할게 있다든지..? 감사합니다.
-
해결됨실전 jOOQ! Type Safe SQL with Java
JOOQ 환경설정 중에 db 패스워드 관련 질문입니다.
강의에서도 그렇고 실제로 실습을 해봤을 때도 그렇고(저는 db를 로컬로 실행했습니다!) gradle 파일에 db root패스워드를 그대로 입력해야 하는 것 같은데.. :) 이 부분에 대해선 이후에 크게 문제가 없는걸까요 ㅠ ㅠ?!
-
미해결스프링 배치
여러 JOB 설정하는법
현재 버전에서는 YML에서 names로 job을 여러개 등록하는게 불가능한데최신 버전 기준으로 JOB을 여러개 설정할 수 없을까요?
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
프로젝트 실행 에러
안녕하세요?강의는 이미 구입하였으나 그동안 다른일로 바빠서 수강을 미루다가 이제서야 들을려고 하는데 공유해주신 샘플 프로젝트를 다운받아서 실행할려고 하니 다음과 같은 에러가 발생해서 문의드립니다.Execution failed for task ':com.group.libraryapp.LibraryAppApplication.main()'.> Process 'command 'C:/Program Files/Amazon Corretto/jdk17.0.14_7/bin/java.exe'' finished with non-zero exit value 1다른 버전의 JDK나 아마존에서 배포하는 JDK를 다운받아서 실행해보아도 동일한 에러가 계속 반복되어서 문의드립니다. 참고로 사용중인 IDE는 IntelliJ IDEA 2024.3입니다. 감사합니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
MSA 개발 배포 방식에 대한 선택과 방향성
안녕하세요! 강의를 마친 후, 여러 가지 궁금한 점이 생겼습니다.지금까지 로컬,및 도커에서 사용한 config-service, apigateway-service, discovery-service(유레카 서버) 의 역할이 Kubernetes 환경에서 대체될 수 있다는 것을 배웠습니다. 구체적으로는:유레카 대체: 각 Pod의 DNS 이름을 사용하여 서비스 간 통신API Gateway 대체: Ingress 리소스를 사용하여 외부 요청을 라우팅(강의엔 없음) Config 서버 대체: RabbitMQ를 통한 busrefresh로 설정 정보를 업데이트하는 대신, Kubernetes의 ConfigMap을 사용하여 설정을 동적으로 업데이트이렇게 Kubernetes에서 많은 기능을 간편하게 처리할 수 있다는 점에 대해 배우면서, 이전의 복잡한 서비스 구조가 생각보다 간단하게 대체될 수 있다는 점에서 약간 허무한 느낌도 듭니다.강의를 마친 후의 궁금증은, 실제 MSA 개발 시에 Kubernetes, Docker, AWS를 사용하는 다양한 배포 방식 중 어떤 선택을 해야 할지에 대한 부분입니다.EC2에 Docker 사용하여 배포EC2에 Kubernetes 사용하여 배포AWS의 EKS, ECS, API Gateway를 사용하는 방법 등 여러가지 방법이 있을텐데요 이와 같은 다양한 옵션 중에서 어떤 방식을 선택 해야하는지 공부의 방향성을 제시해주시면 감사하겠습니다.좋은 강의 감사합니다!
-
해결됨Spring Boot와 React로 배우는 초간단 REST API 게시판 만들기
중괄호 Tab to Exit 설정
js파일에서 html 작성할 때 속성의 중괄호 부분이 tab키를 눌러도 빠져나가지지 않네요.다른 괄호나 따옴표는 나가지는데 따로 설정을 하신건가요?
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
UserDetailsService()에서 UserDetail이 아닌 타입을 반환할 수 있나요?
UserDetailsService()을 커스텀으로 만든 후에 UserDetail이 아닌 타입을 반환할 수 있나요? 아니면 UserDetail의 멤버변수들 뿐 아니라 더욱 많은 멤버 변수들을 추가해서 사용해도 문제가 없나요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
마지막강의 k8s catalog 404 오류
serivce 오타네여
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
최악이라 하셨던 jsonignore
여기 강의 섹션2.API개발 기본-회원조회 강의에서는 @jsonIgnore 사용은 최악이라고 하셧거든요. 이유도 납득갔습니다. 그런데,섹션4.API개발 고급-간단주문 조회 V1에서는 최악이라고 하셨던 @jsonIgnore를 쓰시는데 . 어떻게 받아들이면될까요??최악이라고 하셨는데 ,나중에 사용하셔서 학습자입장에서 띠용했습니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
User import문 자동으로 추가하는 키
8강에서 import문 자동으로 추가하는 키가 뭘까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
7강 패키지 관련
혹시 패키지를 dto랑 controller랑 나누는 이유가 뭔가요?
-
미해결스프링 배치
강의 자료 다른 방법 있을까요?
맥을 사용중인데 DB 스키마 생성 및 이해(1) 파트에서 자료 다운로드가 불가능해서요 다른데서 다운로드 가능한게 있을까요?