학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 강사님은 MemberRepository memberRepository = new MemoryMemberRepository(); 또는 List<Member> result = new ArrayList<>(); 와 같이 인스턴스를 받는 변수의 class 타입을 부모 클래스로 하시는데 이건 특별한 이유가 있는건가요? 아니면 코딩 스타일상 선호해서 부모 클래스 변수를 사용하시나요?
질문 : 실제 작업을 할때, 어떤 경우에 spring-data-jpa의 jpa repository 를 쓰고, 어떤 경우에 EntityManager 를 써야 할까요 ? 안녕하세요. 선생님 이번 강의에 spring-data-jpa 의 jpa repository 를 사용하지 않고 EntityManager 를 주입받아 repository 를 사용 하는 이유는 학습의 목표가 jpa 의 동작을 더 잘 이해하기 위함이라고 들엇습니다.( 출처 : https://www.inflearn.com/questions/549972 ) 그러면 실제 작업을 할때, 어떤 경우에 spring-data-jpa의 jpa repository 를 쓰고, 어떤 경우에 EntityManager 를 써야 할까요 ? 하나의 트랜잭션의 명령을 길게 여러개 쓰고 싶으면 jpa repository 의 함수를 직접 작성한다라고 이해해도 될까요 ?
게시판을 만들다보니 이러한 의문이 생겼습니다. '내가 지금 여기서 throw new MyException() 을 적는게 맞나?' 저는 예외를 요청에 대한 결과가 정상적이지 않을때 혹은 데이터베이스에 값이 들어가지 않을때 발생시키고 있습니다 하지만 이러한 작업들은 if만 사용해도 충분히 가능하기때문에 어느것까지 로직을 통해 처리하고 또 어디부터 예외를 던지는지에 대한 생각이 들었습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. MVC 강의를 듣다가 궁금한 부분이 생겨서 질문남깁니다. public String helloMvc(@RequestParam("name") String name, Model model) 에서 @RequestParam("name")를 없애고 서버를 켰습니다. 그랫더니 이렇게 화면이 나오는데요. @RequestParam("name")가 없어도 파라미터를 잘 넘겨받는 것 처럼 보이는데, 이게 왜 필요한 건가요? 단순히 requried=true를 강제하기 위해 사용하는 건가요?
[질문 내용] gradle환경 만드는 과정에서 말씀해주신 대로 윈도우 환경에서 gradle.build를 하여서 build successful이 나왔는데, 자꾸 cd build에 있는 libs파일이 없다고 나오네요. 실제로 들어가보니 libs파일이 없는데 재 설치해도 마찬가지입니다. 환경변수 모두 java11로 되어있고 모든 setting이 java11로 되어있는데도 에러가 나니, 다음 과정으로 넘어갈 수가 없네요..
특정 게시글을 조회하고 싶을 때 작성된 댓글들도 같이 보고 싶은데 InvalidDefinitionException: Direct self-reference leading to cycle 관련하여 에러가 뜹니다. @JsonIgnore로 해결하기보다 ResponseDto로 만들어서 entity -> ResponseDto로 변환해서 응답하고 싶습니다. 그래서 ResponseDto를 만들어서 entity -> ResponseDto로 변환했는데 저런 에러가 뜹니다. 어떻게 해결해야하는지 도와주세요 그리고 @Builder를 사용해 빌터패턴을 적용할 때 인자가 많아질 경우 아래처럼 인자가 저렇게 길어지는 것이 맞는 건가요?? @Builder public ArticleResponseDto(Long id, String title, String content, LocalDateTime createdDate, LocalDateTime updatedDate, List<Hashtag> hashtags, List<Comment> comments) { this.id = id; this.title = title; this.content = content; this.createdDate = createdDate; this.updatedDate = updatedDate; this.hashtags = hashtags; this.comments = comments; }
html에서 form 데이터를 받는 것에 대한 질문입니다. html form 에서 보내는 데이터를 Controller에서 ModelForm으로 받고 있는데 여기에 대한 질문입니다. 저 ModelForm으로 값을 받을수 있는 이유가 form태그 안에 name값을 넣어준 input태그들과 매칭되어서 값을 받아 올수 있는건가요? 아니면 form 태그에 명시한 th:object에 의해서 memberForm형태로 넘길 수 있는건가요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. 강의 내용을 보면 영한님께서 직접 html을 작성하지는 않지만, html 내용이 종종 나오는데 그럼 스프링 강의를 학습하기전에 html도 먼저 학습을 한후에 진행해야할까요??
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 공부 중에 제가 이해한 것이 맞는지 아닌지 의문이 들어 질문 남깁니다. //1번 AppConfig appConfig = new AppConfig(); memberService = appConfig.memberService(); //2번 AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); MemberService memberService = ac.getBean("memberService", MemberService.class); 1번에서 AppConfig 객체를 직접 만들어서 memeberService 를 가져오는 것은 순수 Java 코드로 짜기 때문이고 2번에서 AnnotationConfigApplicationContext 에서 getBean() 메소드를 통해서 가져오는 것은 스프링으로 전환하여 스프링을 이용하는 것이라고 보면 되나요? + ) 클래스 자료형을 다음과 같이 ApplicationContext 로 사용하는 것보다 AnnotationConfigApplicationContext 를 클래스 자료형과 생성자를 쓰는 것은 기능상 이유 때문인가요? ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] void configurationTest(){ ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); //구체 타입으로 꺼내면 원래 좋지 않지만 테스트를 위해 Impl를 꺼냄 MemebrServiceImpl memberService = ac.getBean("memberService", MemebrServiceImpl.class); OrderServiceimpl orderService = ac.getBean("orderService", OrderServiceimpl.class); MemberRepository memberRepository = ac.getBean("memberRepository", MemberRepository.class); MemberRepository memberRepository1 = memberService.getMemberRepository(); MemberRepository memberRepository2 = orderService.getMemberRepository(); System.out.println("memberService -> memberRepository1 = " + memberRepository1); System.out.println("orderService -> memberRepository2 = " + memberRepository2); System.out.println("memberRepository = " + memberRepository); Assertions.assertThat(memberService.getMemberRepository()).isSameAs(memberRepository); Assertions.assertThat(orderService.getMemberRepository()).isSameAs(memberRepository); } 위의 configurationTest 중 memberRepository가 같은 인스턴스를 공유하고 있지 않아 원인을 AppConfig에서 찾을 수 있었습니다. 아래 코드와 같이 AppConfig에서 실수로 static을 넣었기 때문인데 static을 사용하여 정적 메소드를 생성할 경우 왜 싱글톤이 성립하지 않는지 관계가 이어지지 않아서 질문드립니다. // 원 코드 @Bean public MemberRepository memberRepository() { System.out.println("call AppConfig.memberRepository"); return new MemoryMemberRepositroy(); } // static @Bean public static MemberRepository memberRepository() { System.out.println("call AppConfig.memberRepository"); return new MemoryMemberRepositroy(); }
[질문 내용] 9:30 영한님 말씀 -> requestBodyJsonV3에서 @RequestBody를 생략하면 @ModelAttribute가 적용되고 HelloData에서 setter을 찾으려고 하는데 없어서 값이 세팅이 안된 것 위 글에서 이해되지 않는 부분이 있어서 질문드립니다. 제 생각에는 @ModelAttribute가 프로퍼티를 찾음 -> HelloData 클래스에 @Data 가 적용되어있어서 set, get 존재한다고 생각하는데요 그렇지만 쿼리파라미터 방식 등의 요청이 아니기 때문에 어떤 값을 넣을지 몰라서 값을 넣지 못한다고 고민해봤습니다. 설명해주시면 감사하겠습니다 ㅠㅠ