묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원 리포지토리 테스트 케이스 작성 강의 중 findByName() 질문
"회원 리포지토리 테스트 케이스 작성" 강의 중 12분쯤 findByName()을 실행할 때 findAll()에서 만든 member1,member2가 불러와져서 테스트를 통과하지 못하고 하셨는데 이 부분이 이해가 잘 가지 않습니다.findByName()의 assertThat(result).isEqualTo(member1); 부분에서 예외가 발생합니다. 그런데 왜 첫번째 줄 Member member1 = new Member();에서 실행을 멈추지 않고 실행이 계속되나요?이미 같은 변수이름(findAll()에서 만들어진 member1, member2)이 있음에도 불구하고 예외가 발생해야 맞는데 왜 정상적으로 실행되어서 assertThat(result).isEqualTo(member1);까지 내려가서 예외가 발생하나요? findByName()의 assertThat(result).isEqualTo(member1);가 각각 어떤 객체인지 헷갈립니다.member1은 findAll()에서 만들어진 것이고, result는 findByName()의 첫번째 줄에서 만들어진건가요? 이것도 이해가 가지 않는게 clear()가 없는 상태에서 member1을 또 만들면 이름이 중복되는데 왜 예외가 발생하지 않나요?? package hello.hellospring.repository; class MemoryMemberRepositoryTest { MemoryMemberRepository repository = new MemoryMemberRepository(); @Test public void findByName() { Member member1 = new Member(); member1.setName("spring1"); repository.save(member1); Member member2 = new Member(); member2.setName("spring2"); repository.save(member2); Member result = repository.findByName("spring1").get(); assertThat(result).isEqualTo(member1); } @Test public void findAll() { Member member1 = new Member(); member1.setName("spring1"); repository.save(member1); Member member2 = new Member(); member2.setName("spring2"); repository.save(member2); List<Member> result = repository.findAll(); assertThat(result.size()).isEqualTo(2); } } 그리고 memberService.join(member1);package hello.hellospring.service; class MemberServiceTest { MemberService memberService = new MemberService(); @Test void 회원가입() { //given Member member = new Member(); member.setName("spring"); //when Long saveId = memberService.join(member); //then Member findMember = memberService.findOne(saveId).get(); assertThat(member.getName()).isEqualTo(findMember.getName()); } @Test public void 중복_회원_예외() { //given Member member1 = new Member(); member1.setName("spring"); Member member2 = new Member(); member2.setName("spring"); //when memberService.join(member1); IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2)); assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다."); } }회원 서비스 테스트 강의에서도 비슷한 질문이 있습니다. 11분 50초 경에 memberService.join(member1);에서 예외가 발생한다고 하셨는데 그 이유를 잘 모르겠습니다. member1, member2의 이름을 spring으로 만들고나서 member1을 join할 때는 레포지토리에 아무런 값이 없으므로 예외가 발생할 이유가 있나요? 오히려 assertThrows(IllegalStateException.class, () -> memberService.join(member2)); 에서 중복으로 인해 예외가 발생해야하지 않나요?
-
해결됨Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 2부
혹시 다음강의부터는 ppt 한번에 묶어서 올려주실수있나요?
일일히 다운받으려니까 힘들기도하고 자료들이 피피티 파일 하나에 다 담겨있는게 나중에 복습하기도 편할거같아서요
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
V5 save에서 500오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]회원 가입 페이지와 회원목록은 잘 나오는데 save에서 계속 500 오류가 뜨네요 ㅠㅠ 강의랑 똑같이 따라친거같은데 왜 오류가 발생하는지 모르겠습니다.오류코드는 이렇게 뜹니다.2024-01-11T19:21:07.392+09:00 ERROR 31571 --- [nio-8080-exec-2] a.c.c.C.[.[.[.[frontControolerServletV5] : Servlet.service() for servlet [frontControolerServletV5] in context with path [] threw exception
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
중복과 별도 클래스 선언
안녕하세요! 설계와 구현 부분과 관련하여 궁금한 점이 있습니다!중복이란 여러 클래스에서 반복적으로 나타나는 코드 덩어리라고 보면 되나요?중복되는 부분을 묶어서 별도의 클래스로 묶는건가요?클래스로 묶으면 유지보수하기가 더 좋아져서 그런건가요?감사합니다!
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
H2 DB 테스트 코드 실행시 무한 로딩 연결 안됨
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.테스트 코드 실행시 무한 로딩 미해결 3일차 해결 방법이 필요합니다.package hello.jdbc.connection; public abstract class ConnectionConst { public static final String URL = "jdbc:h2:tcp://localhost/~/study/test"; public static final String USERNAME = "sa"; public static final String PASSWORD = "1318!"; }
-
미해결스프링 핵심 원리 - 기본편
특정 타입으로 조회 시 빈 이름을 지정하는 테스트 코드 관련 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]수업 내용 중에서 스프링 빈 조회 테스트 코드를 짤 때,동일한 타입이 둘 이상인 경우에는public class ApplicationContextSameBeanFindTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(SameBeanConfig.class); @Test @DisplayName("타입으로 조회 시 같은 타입이 둘 이상 있으면, 빈 이름을 지정하면 된다.") void findBeanByName() { MemberRepository memberRepository = ac.getBean("memberRepository1", MemberRepository.class); assertThat(memberRepository).isInstanceOf(MemberRepository.class); } }인스턴스를 비교할 때 인터페이스인 MemberRepository.class를 사용해줬는데,상속 관계 설명 시에는public class ApplicationContextExtendsFindTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(TestConfig.class); @Test @DisplayName("부모 타입으로 조회 시 자식이 둘 이상 있으면, 빈 이름을 지정하면 된다.") void findBeanByParentTypeBeanName() { DiscountPolicy rateDiscountPolicy = ac.getBean("rateDiscountPolicy", DiscountPolicy.class); assertThat(rateDiscountPolicy).isInstanceOf(RateDiscountPolicy.class); } }구체화 타입인 RateDiscountPolicy.class로 인스턴스를 확인한 이유가 뭔지 궁금합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Execution failed for task ':ServletApplication.main()'.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]java 17, gradle 8.5 를 사용하고 있는데 갑자기 실행이 안됩니다. Execution failed for task ':ServletApplication.main()'.> Process 'command '/Users/gangminhui/Library/Java/JavaVirtualMachines/corretto-17.0.9/Contents/Home/bin/java'' finished with non-zero exit value 1* Try:> 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.Deprecated 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.5/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.BUILD FAILED in 2s3 actionable tasks: 1 executed, 2 up-to-date
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
중괄호배치, 자동import질문
파일을 들어갈때마다 중괄호가 저런식으로 길게 배치가 되더라고요 혹시public MemberController(MemberService memberService) { this.memberService = memberService; }이렇게 작성할 수 있게 할 수 있을까요? 궁금합니다.그리고 김영한님 강의를 보면 자동으로 import가 되는걸 볼 수 있는데 저는 일일히 option + enter로 import시키고 있습니다. 어떻게하면 김영한님처럼 자동으로 import 할 수 있을까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
db 네트워크모드 접속 이유
최초 db 실행시에 파일모드로 실행해서 db파일을 만드는 것까지는 이해가 되었습니다. 하지만 이후부터는 tcp를 이용해서 네트워크 모드로 접속한다고 되어있는데 그 이유를 찾아보니 여러 어플리케이션이 동시에 해당 db를 사용하는 경우에는 db를 파일모드로는 사용하지 못하고 네트워크 모드로만 가능하다는 내용을 찾게 되었습니다. 이러한 이유가 맞는지 궁금합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Controller 비즈니스 로직
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]현재 강의 기준으로는 Controller에서 비즈니스 로직을 수행한다고 봐야 하나요?? 아니면 Controller안에 service매서드가 있으니 비즈니스 로직 서비스를 호출한다고 봐야 하나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
실행 후 오류 메세지가 뜹니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 아니오2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]강의와 관련된 내용은 아닙니다만... HelloSpringApplication을 실행하면 다음과 같은 오류 메세지가 뜹니다. 실행하고 테스트 코드를 돌리는데는 문제가 없습니다. 버전 문제 혹은 업그레이드를 해야하는 상황이라면 하지 않아도 괜찮은가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
패키지 관련 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의를 듣다가 패키지관련으로 궁금증이 생겨 질문을 남기게 되었습니다.현재 강의에서는 편의성을 위해 회원이나 상품 이런 여러 도메인을 각각 domain, repositoy 등 한 패키지에 몰아서 하고 있는 것으로 보입니다. 그렇다면 제가 따로 category를 추가해서 개발을 해보거나 더 형태가 복잡한 개발을 할 때는 패키지 구성을 어떻게 하는 것이 효율적인가요?(jpabook.jpashop 바로 아래 패키지 기준)주제별로 하위 패키지ex) 상품(패키지) - domain(패키지) - 상품, 주문 (클래스) - repository(패키지) - 상품repo(클래스)기능별로 하위패키지ex) domain(패키지) - member(패키지) - 멤버(클래스) domain(패키지) - 상품(패키지) - 상품(클래스)
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
TestConfig{ public TestConfig(DataSource datasource)}
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요?예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예@TestConfigurationstatic class TestConfig {private final DataSource dataSource;public TestConfig(DataSource dataSource) {this.dataSource = dataSource;}자동화부분에서 static 클래스인 TestConfig를 생성자로 다시 호출하는데 이렇게 하는 이유와 되는 알고리즘이 무엇인지 궁금합니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
JSON 파싱과 매핑에 차이
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]일반적인 문자열 데이터에 불과했던 JSON을 파싱을 통하여 객체로 변환해주어 JSON 객체로서 내부의 각 데이터에 접근할 수 있다고 알고있습니다.그런데 강의를 듣다가 매핑이란 개념도 등장하는데 JSON 매핑과 파싱에 차이가 무엇인지 궁금합니다!
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
질문있습니다.
Controller V3에서 Map<String,String> paramMap이 HttpServletRequest를 대체하고 있는데 이 과정이 잘 이해가 가지 않습니다. paramMap이 어떻게 매개변수를 받을 수 있는건가요? 그리고 쿼리문 말고도 Body도 받을 수 있는지 궁금합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
인터셉트 호출안됨 로그에 파일 찍히지 않음
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]인터셉터가 호출이 안됩니다. log.infro 값들도 안찍히고 있어요
-
해결됨실전! 스프링 데이터 JPA
14분에서 limit이 아닌 fetch로 sql이 나가는데
영상에서는 findTop3by에 대한 쿼리메서드의 sql이 limit으로 나가는데 실습해보니 first ? rows only로 나가는걸 확인했습니다. 찾아보니 동일한 기능을 하지만 데이터베이스 호환성으로 first? rows only가 날려지는것으로 이해했는데. 이 부분 맞을까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
MemberRepositoryTest() 의 save() 질문
안녕하세요.강의를 보기 전에 테스트를 먼저 작성해보고 강의를 보았는데 제가 생각했던 테스트 코드와 차이가 있어서 질문 드립니다.(당연히 다양한 방법의 테스트 코드가 나올 수 있음은 알고 있습니다. ) 저의 경우, MemberRepositoryTest()에서 save 메서드를 테스트할 때 findById처럼 같은 클래스 내의 다른 메서드를 사용해서 테스트하게 되면 오류가 났을 때 어떤 부분인지 바로 알기 힘들 것 같아 다른 메서드를 사용하지 않는 방식으로 테스트 코드를 작성했습니다. 그러나 강의를 보면 위와같이 다른 메서드를 사용해서 테스트해도 상관없는 듯 하여 통상적으로 테스트 코드를 작성할 때 다른 메서드를 같이 사용해도 상관이 없는건지, 궁금증이 생겨 질문을 남기게 되었습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
테스트 코드를 돌리면 오류가 뜹니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]테스트 코드를 돌리면 이런 오류가 뜹니다.
-
미해결윤재성의 스프링 프레임워크 개발자를 위한 실습을 통한 입문 과정
Spring Framework의 특징
안녕하세요. 수강생입니다.다름이 아니라, 스프링의 특징 중에서 Java 코드를 줄일 수 있다고 하셨고 그 이유 중 하나가 xml 파일을 예시로 들었는데 이게 java 프로젝트에서 스프링에만 사용할 수 있는 확장자 파일인가요?