학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 코드 다 알맞게 치고 SpringDataJpaMemberRepository 테스트를 돌리니까 이렇게 오류가 나네요 ㅠㅠ 문제가 뭘까요?
https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/spring-boot-features.html#boot-features-spring-mvc-welcome-page 다음 링크를 읽어보면 SpringBoot의 정적 자원 접근을 위한 default 설정이 /static, /public, /resources 밑으로 되어있다고 나와있습니다. 그런데 default 설정을 건든적이 없음에도 어떻게 webapp폴더 아래에 있는 index.html파일을 찾아내서 welcom page로 사용하는건지 궁금합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 타임리프에서 스프링EL 문법을 사용하여 ENUM에 직접 접근할 수 있다고 했는데 그렇게 했을 때 폴더 구조가 노출됨으로써 생기는 보안문제는 없나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' 1.9.0으로 바꾸시면 나올겁니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG ) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 코드를 작성하실 때, th:action을 비워두셨습니다. 그리고 그 뒤 설명하실 때, "수정하기를 누르고 소스를 보면 action이 비워져 있는데, 이대로 저장하게 되면 이 경로 그대로 들어가게 됩니다"라고 말씀하셨습니다. 설명하시는 의미는 대강 이해하겠는데 정확히 이해가 잘 안됩니다. 구체적으로 어떤 과정을 거쳐서 강사님이 말씀하신 대로 수행이 되는건가요? 설명 부탁드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 위에서 private final ItemRepository itemRepository라고 작성한 부분은 ItemRepository의 객체를 하나만 사용하려는 목적. 즉, 싱글톤 객체를 사용하려는 목적으로 이해를 했습니다. 근데, 위에 코드는 ItemRepository의 참조값을 담을 수 있는 변수를 선언만 하고 실제 객체를 가져오는 부분(ItemRepository 객체)이 없는거 같은데 어떻게 ItemRepository 객체를 BasicItemController 클래스에서 사용할 수 있는건가요? 설명 부탁드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 답답합니다.... 원격 지원 이런게 있으면 좋겠습니다.. 일과 다 마치고 강의 시간 쪼개서 겨우 보려는데 올드버전 강의를 계속 판매하고 있지만 그에 비해 좀 영상제작 당시 버전과 많이 다른 부분을 찾아 헤매는 수강생들이 자주 보이고 영상 10분을 보려고 설정 안 되는 걸 찾아 2~3시간 낭비 할 때가 가장 아쉽네요... 다만 강의 내용은 만족스럽습니다. 여전히 해결이 안되고 있어 그냥 의견을 올려봅니다..
안녕하세요! package hello.springmvc.basic.requestmapping; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class MappingController { private Logger log = LoggerFactory.getLogger(getClass()); @RequestMapping("/hello-basic") public String helloBasic(){ log.info("helloBasic"); return "ok"; } } 이렇게 /hello-basic 으로 매핑 되어있습니다 /hello-basic URL로 요청하면 잘 되지만 강의 3분대 내용처럼 '/' 를 추가했더니 같은 요청으로 매핑이 안되고 404 오류가 발생합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강의와 상관없지만 궁금해서 여쭤봅니다! 이전 기본편과 다르게 프로젝트 생성 후 ServletInitializer class가 별도로 생성된 이유는 무엇인가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 강의 중 SpingConfig 클래스의 작동방식이 궁금해서 질문 올립니다! @Autowired 아래 생성자에 매개변수에는 bean에 있는 객체이거나 @Service , @Repository 등의 아래의 인스턴스가 들어가는 것 아니었나요? SpringConfig 생성자의 매개변수에 MemberRepository를 구현한 JpaMemberRepository의 인스턴스가 들어가야하는 것으로 알고있습니다. 어떠한 구조로 스프링 컨테이너가 JpaMemberRepository의 인스턴스를 넣어서 호출해주는 것인지 궁금합니다!! +찾아보던 중 스프링 데이터 JPA는 JpaRepository 와 같은 인터페이스를 상속받은 인터페이스를 스캔하여 자동으로 빈으로 등록한다는 사실을 확인하였습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 강의 4분대에 MappingClassController에서 PathVariable사용 할 때 변수의 이름과 {}안의 이름이 일치하면 @PathVariable(name = "userId") 여기서 (name = "userId") 이 부분을 생락하고 @PathVariable String userId 이렇게 써도 된다고 하셨느데 생략하고 코드를 작성하니 포스트맨으로 요청을 보내면 500에러와 함께 2024-01-10T01:03:31.758+09:00 ERROR 7843 --- [nio-8080-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.IllegalArgumentException: Name for argument of type [java.lang.String] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag.] with root cause 이런 로그가 뜹니다. name을 명시해주면 잘 돌아가고요. 이유가 무엇인가요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? ( 예 /아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/ 아니오 ) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 /아니오) [질문 내용] webapp 패키지 생성 후 index.html과 basic.html 생성 후 ' localhost:8080 ' 또는 localhost:8080/index.html ' 으로 화면이 출력되어야 하는데 으로 출력되어서 질문들을 보면서 확인해본 결과 webapp 폴더 내의 index.html이 welcome 페이지로 등록이 되지 않는 것을 확인했습니다. 이 후 다른 질문에 'resource/static' 에 넣어서 확인하면 되지 않냐 라는 해당 질문으로 확인해본 결과 static에서는 정상적으로 welcome 페이지가 등록된 것을 확인했습니다. 질문들을 확인하면서 현재 강의에 등록된 소스 코드의 프로젝트는 자바 11버전이라 현재 제 컴퓨터에서 자바 17로 운영하고 있어서 확인이 조금 껄끄러운 상황이라 17에서는 따로 webapp 폴더로 확인할 수 있는지 궁금해서 질문 올렸습니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. MemeberRepository.java 에서 Member save(Member member); 를 입력하면 Member에 에러가 뜹니다영한님도 강의 중에 에러가 뜨셨는데 빠르게 고치시더라구요뭘 고치셨는지 알려주시면 감사하겠습니다!! import class를 눌러봤는데 import java.lang.reflect.Member;가 위에 입력되면 에러가 해결되긴 하더라구요근데 강의와 코드가 다른데 괜찮나요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. package hello.hellospring.service; import hello.hellospring.domain.Member; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import java.util.Optional; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.junit.jupiter.api.Assertions.*; class MemberServiceTest { MemberService memberService = new MemberService(); @Test void join() { //given Member member = new Member(); member.setName("hello"); //when Long saveId = memberService.join(member); //then Member findMember = memberService.findOne(saveId).get(); Assertions.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); try { memberService.join(member2); fail(); } catch (IllegalAccessError e) { //예외가 터져서 정상적으로 성공한 것 assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다."); } //then } @Test void findMembers() { } @Test void findOne() { } } java.lang.IllegalStateException: 이미 존재하는 회원입니다. at hello.hellospring.service.MemberService.lambda$validateDuplicateMember$0(MemberService.java:26) at java.base/java.util.Optional.ifPresent(Optional.java:178) at hello.hellospring.service.MemberService.validateDuplicateMember(MemberService.java:25) at hello.hellospring.service.MemberService.join(MemberService.java:18) at hello.hellospring.service.MemberServiceTest.중복_회원_예외(MemberServiceTest.java:45) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) Process finished with exit code -1 이렇게 빨간 느낌표가 뜨면 테스트 자체가 잘못된다는 건가요?
안녕하세요 강사님 productAdminEx 문제에 관련해서 질문이 있습니다. productNames[productCount] = scanner.nextLine(); 이게 원래 배우던 형식으로는 두번째 사진처럼 for문 안에서 productNames[i] = scanner.nextLine(); 이런식이어서 예를들어 i = 0인경우 productNames 배열의 0번째 인덱스에 scanner.nextLine();으로 사용자가 입력한 값이 들어가는건 이해가 가는데 productNames[productCount] = scanner.nextLine(); 면 productNames배열 안에 있는 productCount에 scanner.nextLine();로 사용자가 입력한 값을 넣는건가요..? 그리고 그 사용자가 입력한 값이 들어가있는 productCount를 productNames배열이 위치를 참조하고 있는걸까요?? 이해가 잘 안가서 질문드립니다. (첫번째 사진) (두번째 사진) productNames[productCount] = scanner.nextLine(); 이게 productNames의 배열 자리에 productCount의 값을 넣는다는 의미인가요? 이해가 안갑니다..ㅜ