묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
spring cloud gateway 에서 eureka의 용도
강사님 강의 잘듣고 있습니다.한가지 궁금점은 유레카 서버를 별도로 올리지 않아도 api-gate-way에서 first-service, secound-service라우팅 및 필터가 가능한데 이떄 유레카의 용도가 무엇인기 궁금합니다. 유레카 서버로 부터 연결된 유레카 클라이언트 정보를 얻는다고 했는데... 유레카 서버를 off해도 routing은 정상적으로 이루어지더라구요 .. 제가 뭔가 잘못 이해하고 있는 부분이 있을까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
로그
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]쿼리 파라미터를 로그로 남기면 어떤 점이 좋은 건가요??
-
해결됨Practical Testing: 실용적인 테스트 가이드
통합테스트/인수테스트/E2E 테스트의 차이점이 무엇일까요?
안녕하세요! 강사님. 저번에 상세하게 답변해주셔서 너무 감사했습니다! 말씀해주신 인수 테스트에 대해서 알아보고, RestAssured를 사용해서 테스트 적용해보았고, 테스트 무사히 성공 했습니다. 감사합니다! 다만, 적용해보면서 또 여러가지 궁금점이 생겼어요. 질문은 총 5가지 입니다!1. RestAssured를 사용해서 API 테스트를 할 때 DB까지 테스트 하는 테스트를 보통 통합테스트라고 하는건가요? 그렇다면 E2E 테스트는 실무에서 보통 어떻게 수행하는지 궁금합니다. 2.통합 테스트라고 하면 모듈간의 통합을 검증하기 위함이라고 하던데, 개발 환경에서 실행되는 테스트일까요? 아니면 실제 운영환경과 동일한 환경에서 테스트를 수행해야 되는걸까요? 3. 인수테스트도 통합테스트에 속하는 개념인걸까요? 4. 통합테스트(인수테스트)에서 실패 케이스도 작성해야 하는 걸까요? 5. 다들 RestAssured, MockMvc를 사용해서 인수테스트를 하던데, 그럼 통합테스트는 어떤걸 사용하는지 궁금합니다. (찾아보니 @SpringBootTest가 통합 테스트는 아니라고 해서요!)
-
미해결코드로 배우는 React with 스프링부트 API서버
엔티티 클래스 만들기 챕터에서 테이블 왜 두개 만들어진 건가요?
엔티티 클래스 만들기 챕터에서 테이블 왜 두개 만들어진 건가요? 엔티티 클래스 만들기 챕터 8분 36초에서 테이블이 왜 두개 만들어 졌나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2 database 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]계속 이런 오류가 떠요... 어떻게 해결할 수 있을까요 콘솔을 사용해서 jpashop.mv.db 파일을 만들면 IO Exception: null [90028-199]이런 오류가 발생합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
통신해서 받는 것과 만들어서 사용하는 것
안녕하세요.변경감지 기능을 사용하기 위해서 데이터 베이스 통신해서 데이터를 가져와서 쓰는 것과 기존에 set으로 BookForm 객체 만드는 것에 대해서 여쭤보고 싶은게 있습니다. 데이터베이스 통신이 한 번 더 일어나는데 위험성이 증가하거나 하진 않나요..? 옛날에 사수한테 웬만하면 데이터베이스 통신하는 일을 줄이라고 했던 일이 기억나서 여쭤봅니다
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MemberServiceTest db에 엔티티 추가X
package jpabook.jpashop.Service; import jpabook.jpashop.Repository.MemberRepository; import jpabook.jpashop.domain.Member; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.transaction.annotation.Transactional; import static org.junit.jupiter.api.Assertions.*; @ExtendWith(SpringExtension.class) @SpringBootTest @Transactional class MemberServiceTest { @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; @Test @Rollback(false) public void 회원가입() throws Exception { //given Member member = new Member(); member.setName("kim"); //when Long savedId = memberService.join(member); //then assertEquals(member, memberRepository.findOne(savedId)); } @Test public void 중복_회원_예외() throws Exception { //given //when //then } }Member 테이블에 추가가 안되네요
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
JpaTransactionManager 사용할 경우 커넥션 로깅 질문
DataSourceTransactionManager의 로그에는 사용되고 있는 커넥션의 정보(ex. conn0)가 자세히 나오는데, JpaTransactionManager를 사용할 경우에는 위와 같이 몇번째 커넥션이 사용되고 있는지에 대한 정보가 잘 나오지 않는 것 같습니다. JPA를 사용할 경우, 위 사진과 같이 스레드가 커넥션 풀에서 어떤 커넥션을 가져오고 반환하는지를 알 수 있는 방법이 있는지 궁금합니다!
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
react.js 프론트 소스 파일 부탁합니다..
웹을 구현하는데 프론트앤드가 필요한데, 프론트는 소스 코드를 제공하지 않는다는게 좀 의아합니어쨌든 프론트 소스코드 파일 react.js 부탁합니다..skii4@hanmail.net
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
질문드립니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 내용]강의 내용과 관련된 질문은 아닌데 제가 commit에서 unversioned files에 있는 것들에 그동안 했던 작업들이 너무 쌓여있는 것 같아 delete를 했더니 intellij에 그동안 작업했던 작업물(패키지는 남아있고 자바 파일들이 모두 날라갔습니다) 혹시 복구할 방법은 없겠죠..?
-
미해결실전! 스프링 데이터 JPA
p6spy 적용 시 gradle 프로젝트가 빌드되지 않습니다.
java 버전17.0.9이고 springboot 버전은 3.2.10-SNAPSHOT 입니다. implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' build.gradle 파일에 로그 관련 부분 추가하니 아래와 같이 오류가 나는데 이유를 모르겠습니다.Caused by: java.lang.NoClassDefFoundError: org/apache/maven/settings/building/SettingsBuildingRequest at org.gradle.api.internal.artifacts.DependencyManagementBuildScopeServices.createMavenSettingsProvider(DependencyManagementBuildScopeServices.java:289) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125) at org.gradle.internal.service.ReflectionBasedServiceMethod.invoke(ReflectionBasedServiceMethod.java:35) at org.gradle.internal.service.DefaultServiceRegistry$FactoryMethodService.invokeMethod(DefaultServiceRegistry.java:916)
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
단순 조회용 엔티티
안녕하세요! 프로젝트를 진행하는 도중 영한님 강의가 생각 나 궁금한 게 생겨 문의납깁니다. 테이블의 모든 값들을 전체 조회하며, 거의 변하지 않는 데이터를 단순 조회하는 용도로 쓸 때도 DTO를 통해 조회하는 게 좋을까요? (예시: 프로젝트 실행 시 csv파일 또는 엑셀파일을 통해 DB에 자동 저장되게 만든 도시 데이터 등을 확인하는 단순 get List, 여행•숙박 사이트에 기본으로 저장되어있는 지역 카테고리 등)
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
혹시 현업에서도 예외 테스트 시, Assertions.assertThrows 를 많이 사용하나요?
@Test void 상품주문_재고수량초과() throws Exception { //given Member member = createMember(); Item item = createBook("시골 JPA", 10000, 10); int orderCount = 11; //when // orderService.order(member.getId(), item.getId(), orderCount); //then Assertions.assertThrows(NotEnoughStockException.class, () -> orderService.order(member.getId(), item.getId(), orderCount),"재고 수량 부족 예외가 발생해야 한다."); }Assertions.assertThrows 사용 시 파라미터 자체에 로직을 넣어줘야 해서, JUnit4 의 expected 옵션과 다르게 테스트의 when 항목을 적지 않아도 되는 상황이 발생하는 것 같아서요. 현업에서도 이 방식을 주로 사용하시나요?(+ 추가 질문)junit 과 assertj.core 라이브러리를 함께 쓰는 경우엔 이렇게 한 쪽을 지저분하게 쓸 수 밖엔 없나요? (isEqualTo와 assertThrows를 하나의 테스트 클래스에서 같이 쓰는 경우) @Test void 주문취소() throws Exception { //given Member member = createMember(); Book item = createBook("시골 JPA", 10000, 10); int orderCount = 2; Long orderId = orderService.order(member.getId(), item.getId(), orderCount); //when orderService.cancelOrder(orderId); //then Order getOrder = orderRepository.findOne(orderId); org.assertj.core.api.Assertions.assertThat(getOrder.getStatus()).isEqualTo(OrderStatus.CANCEL); org.assertj.core.api.Assertions.assertThat(item.getStockQuantity()).isEqualTo(10); }
-
해결됨대기업 서버 개발자가 알려주는 Spring, AWS를 활용한 이메일 전송 시스템
Constants 가 맞을거 같습니다.
상수들을 모아 놓은 클래스이므로 Constants 가 맞는 이름일 거 같습니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
강의영상 5분 7초 EAGER 패치 전략
비슷한 게시글을 봐도 이해가 잘 가지 않아서 재차 질문 드립니다제가 이해하는 상황이 맞는지 고견 부탁드립니다1. fetch = EAGER 쿼리가 두 번 실행이것이 프록시 강의영상에서 말씀하시는 (N+1) 문제인지 궁금합니다첫 번째 쿼리는em.flush(), em.clear() 실행되면 영속성 컨텍스트가 비워지고 이후 jpql 쿼리가 실행되면서 EAGER 패치 전략에 따라 Team도 함께 조회가 됩니다. 두 번째 쿼리는 영속성 컨텍스트가 비워졌고 EAGER 패치 전략으로 조회되어야 합니다. 실제 엔티티로 조회되어야 하는걸로 알고있습니다하지만 특정 시점에서 Team이 프록시로 로드 되었고 이후 프록시가 초기화되면서 다시 데이터베이스에서 조회하면서 발생한 쿼리로 생각이 듭니다
-
해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
한번만 도와주세요 오류를 못찾겠습니다.
사이드 바에 skill이랑 project만 페이지 오류가발생합니다. skill 들어갔을떄 오류 로그는 project 들어갔을떄 오류 로그 깃허브 주소:https://github.com/kimauto/portfolio-kimauto이렇게 오류가 뜨면 No static resource admin/skill저는 skill 컨트롤러,서비스,DTO 가서 제가 코드 실수를 했나 먼저 확인하고 용백님 깃헙 소스코드랑 비교하면서 오류 체크를 했습니다. 이렇게 오류를 접근하는 방식이 맞나요? 무슨 문제일까요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
build.gradle에 queryDSL 설정이 잘되지 않습니다.
plugins { id 'java' id 'org.springframework.boot' version '3.3.1' id 'io.spring.dependency-management' version '1.1.5' } group = 'jpabook' version = '0.0.1-SNAPSHOT' java { toolchain { languageVersion = JavaLanguageVersion.of(17) } } //롬복 셋팅 configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-devtools' implementation 'junit:junit:4.13.1' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.1' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'com.fasterxml.jackson.datatype:jackson-datatype-hibernate5' implementation 'javax.persistence:javax.persistence-api:2.2' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' //test 롬복 testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' //Querydsl 추가 implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" } tasks.named('test') { useJUnitPlatform() jvmArgs '-Xshare:off' // JVM 아규먼트 설정 } clean { delete file('src/main/generated') }이렇게 설정해둔 상태인데 gradle을 다시로드했음에도 other에 compilequerydsl 설정이 생기지 않는 상황이고, 다른방식으로 설정도 했었는데, 그때는 또 우측 gradle의 other에 compileQeurydsl 설정이 보여서 설정을 진행했고 프로젝트 generated 디렉토리가 생성되긴 했지만, generated 디렉토리 하위 파일들이 보이지 않습니다. 어떻게 해결할 수 있을까요? 커뮤니티의 내용들을 다 참고했지만 되지 않네요..
-
미해결코드로 배우는 React with 스프링부트 API서버
세션 10번 완성 소스가 잘못올라온거 같아요
세션 10번 강의 보면서 따라가고 있는데 org.springframework.dao.DataIntegrityViolationException: could not execute statement [(conn=335) Cannot add or update a child row: a foreign key constraint fails (`apidb`.`tbl_cart_item`, CONSTRAINT FKs7vg62w3nq7igdxgssq1u0biw FOREIGN KEY (`product_pno`) REFERENCES tbl_product (`pno`))] [insert into tbl_cart_item (cart_cno,product_pno,qty) values (?,?,?) returning cino]; SQL [insert into tbl_cart_item (cart_cno,product_pno,qty) values (?,?,?) returning cino]; constraint [null] 에러가 나오더라구요..그래서 제가 세션 10 완성 소스 보면서 잘못된 곳을 찾아 보려는데 ... 올라건 소스가 잘못된거 같아요... 세션 10의 소스가 아닙니다.
-
미해결코드로 배우는 React with 스프링부트 API서버
LocalDateFormatter에 대해서 궁금한 점이 있습니다.
public ResponseEntity searchLinkOrderNumberOutput( @ApiParam("주문 번호") @RequestParam(required = false) List<String> orderNumbers, @ApiParam(name = "startDate", value = "yyyyMMdd", required = true) @RequestParam String startDate, @ApiParam(name = "endDate", value = "yyyyMMdd", required = true) @RequestParam String endDate, @ApiParam(name ="confirmationStatus", value="확정여부(Y/N)") @RequestParam String confirmationStatus, @ApiParam(name = "pageSize", value = "한 페이지에 보여줄 주문 개수 (미 입력시 기본값 20)") @RequestParam(defaultValue = "20") int pageSize, @ApiParam(name = "pageNumber", value = "데이터를 조회 할 페이지 숫자 (미 입력시 기본값 1)") @RequestParam(defaultValue = "1") int pageNumber) {궁금한 점이 있습니다 선생님 만일 controller에서 string으로 날짜값을 받으면 이제 별도의 파싱작업을 거쳐서 LocalDateTime 형식으로 변환해 줘야하는데 LocalDateFormatter을 사용하면 해당 작업을 생략할 수 있는건가요???
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
강의에서의 회원가입 테스트를 JUnit5 방식으로 바꾸면 이게 맞을까요?
@ExtendWith(SpringExtension.class) @SpringBootTest @Transactional class MemberServiceTest { @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; @Test void 회원가입() throws Exception { //given Member member = new Member(); member.setName("kim"); //when Long savedId = memberService.join(member); Member joinedMember = memberRepository.findOne(savedId); //then assertThat(member).isEqualTo(joinedMember); } 이렇게 진행하면 될까요?