묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
스프링 부트가 제공하는 임베디드 DB DataSource 스프링 빈 자동 등록 관련
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요.H2 DB는 자바로 만들어져 있고, 덕분에 JVM 내부에서 동작하는 임베디드 모드를 지원한다고 이해했습니다.스프링 부트는 데이터베이스에 대한 별다른 설정이 없으면 임베디드 데이터베이스를 사용(제공)한다고 하는데..질문: 그렇다면 스프링 부트가 DataSource를 스프링 빈으로 자동 등록 시 라이브러리(의존 관계)에서 H2가 있는지를 먼저 확인하고, 별도의 설정(application.properties 내 url, username 등)이 없으면 임베디드 모드로 DataSource를 생성하여 빈으로 등록하는 건가요? 아니면 application.properties를 먼저 확인하고 url이 없으면 -> 라이브러리에 H2가 있는지 확인 후 메모리 DB를 사용하는 DataSource를 생성하여 빈으로 등록하는 건가요? 만약 후자라면 왜 그렇게 설계했을지(이점?)도 궁금합니다.. 감사합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
BindingResult Whitelabel Error Page질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 수량이나 가격에서 qqq 로 했을경우 따로 에러를 BindingResult 에 검증 오류를 안넣어도 알아서 만들어 준다고 되어있는데 저는 저렇게 했을경우 Whitelabel Error Page 가 생겨서 질문드립니다 @PostMapping("/add") public String addItemV1(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes , Model model) { if(!StringUtils.hasText(item.getItemName())){ bindingResult.addError(new FieldError("item","itemName","상품 이름은 필수입니다")); } if(item.getPrice()==null || item.getPrice()<1000 | item.getPrice()>1000000){ bindingResult.addError(new FieldError("item","price","가격은 1000~1,000,000 까지 허용합니다")); } if(item.getQuantity()==null || item.getQuantity()>=9999){ bindingResult.addError(new FieldError("item","quantity","수량운 9999 이상이어야합니다")); } if(item.getQuantity() != null || item.getPrice()!=null){ int resultPrice=item.getPrice()*item.getQuantity(); if(resultPrice<10000){ bindingResult.addError(new ObjectError("item","가격 * 수량의 합은 10000원 이상이어야합니다 .현재값 = "+resultPrice)); } } if(bindingResult.hasErrors()){ log.info("errors={}",bindingResult); System.out.println("zzzzzzzzzzzzzzzzzzzzzzzzzzzz"); return "validation/v2/addForm"; } Item savedItem = itemRepository.save(item); redirectAttributes.addAttribute("itemId", savedItem.getId()); redirectAttributes.addAttribute("status", true); return "redirect:/validation/v2/items/{itemId}"; }
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
강의자료에서 수정되어야 될 부분이 있네요.
강의자료 DelegatingPasswordEncoder 빈 정의에서알고리즘 지정생성에서@Bean public PasswordEncoder passwordEncoder() { String encodingId = "pbkdf2"; Map encoders = new HashMap<>(); encoders.put(encodingId, Pbkdf2PasswordEncoder.defaultsForSpringSecurity_v5_8()); DelegatingPasswordEncoder delegatingPasswordEncoder = new DelegatingPasswordEncoder(encodingId, encoders); return delegatingPasswordEncoder;} 에서 String encodingId = "pbkdf2"; 가 String encodingId = "pbkdf2@SpringSecurity_v5_8""; 로 수정되어야 되거나 아님 encoder 할때 버전을 5_5로 바꾸어야 하네요.한참 헤메이다 저처럼 헤메이지 말라구 올려봅니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
서비스 네이밍
서비스는 join, 메모리에서는 save 이런 식으로 표현을 한다면, 서비스 즉 비즈니스 관점은 다른 말로 “유저입장“ 이라고 생각하면 될까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
HandlerAdapter마다 상속이 다른 것에 대하여
강의를 보면서 소스코드를 보니까, 다음과 같은 차이점이 있었습니다.- `SimpleControllerHandlerAdapter`, `HttpRequestHandlerAdapter`: HandlerAdapter를 상속- `RequestHandlerAdapter`: AbstractHandlerMethodAdapter를 상속 이런 이유가 RequestHandlerAdapter 는 @RequestMapping이 붙은 메서드 단위로 실행해야 되기 때문에 위의 2가지 어댑터랑은 적용 범위가 달라서 따로 뺀건가요? 정확하지가 않아 여쭈어 봅니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원목록 404 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.회원 웹 기능 - 조회 영상을 따라하다 회원 목록을 누르니#이름 이 아닌 화이트라벨404 오류가 떠서 질문드립니다. 영상38초쯤에 작성하신 findmembers를 입력하면 영상에선 좌측에 List<Member> members =가 자동완성이 되던데 저는 안되길래 직접 타이핑하여 문제가 된건지 다른 이유가 있는것인지 알고싶습니다. 아래 링크입니다.https://drive.google.com/file/d/1Gx9K-pAn1YogtFvby-9sfCVsmB8WiHUg/view?usp=sharing
-
미해결
스프링 알림 1:N 발송 어떻게 구현해야할까요?
안녕하세요. 스프링으로 알림 서비스 API 만들어보고 있습니다.여기서 알림이라 하면, 인프런에서 '종 아이콘' 누르면 나오는 사이트 내부에 있는 알림입니다. 현재 Notification 테이블은 Member 테이블이 @ManyToOne으로 매핑되어있는 상태입니다.즉, 한 유저는 여러개의 알림을 가질 수 있습니다. 'OO님이 본인 게시글에 답글을 달았습니다'와 같은 1:1 알림 전송은 Notification insert가 댓글 달때 한번만 일어나므로 상관없지만, '스프링 핵심 원리 -기본편 강의에 새소식이 있어요!!'와 같은 1:N 알림을 보내려면, 스프링 핵심원리를 듣는 모든 수강생한테 알림을 보내야하니까, 수강생수만큼 Notification Insert가 나가야하잖아요??그러면 수강생 수가 100만명이면 Insert가 100만명 나가는건데, 너무 '비효율적'이고 'DB 공간 낭비'라고 생각되서요. 대규모 서비스에서 사용되는 좋은 방법 추천해주실 분 계신가요?인프런에서 1:N 알림은 어떤 방법을 쓰고 있을까요~?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
섹션2의 정적 컨텐츠 부분에 질문이 있습니다
강의를 한번 돌리고 복습중입니다 섹션2. 정적 컨텐츠 강의에서 위와 같이 /hello-static.html을 입력하여 요청하면 우선 1번과 같이 hello-static관련 controller에서 있는지 확인하고 없으면 2번과 같이 정적 컨텐츠를 내려준다고 설명하셨습니다.이와 관련하여 궁금증이 uri요청 자체가 hello-static.html로 요청자체에 .html을 요청하였기 때문에 .html을 찾아야 하는게 흐름상 맞지 않나라는 생각이 듭니다. gpt를 통해 알아보니 .html을 처리하는 controller가 있을 수 있기 때문이라고 하는데, 그렇다면 hello-static.html을 요청할 경우 스프링 컨테이너에서 찾는 controller의 이름이 어떻게 되나요??dispatcher servlet처럼 논리 이름만을 생각하여 .html을 제외한 hello-static이라는 controller의 이름을 찾을 것 같은데 맞는지 궁금하네요질문 요점: /hello-static.html로 요청했을 경우 1번 경우의 스프링 컨테이너에서 controller를 찾을때 찾는 이름의 기준이 무엇인지에 대한 질문.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2 설치 질문
제가 실수로 h2 server 를 지웠는지 저장한 설정에 h2 가 보이지 않습니다. 지우고 다시 설치해도 똑같네요 ㅠㅠ 어떻게 해야하나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
cannot resolve symbol 문제
현재 컴퓨터에서 스프링 강의를 따라하며 개발했고 코드가 잘 돌아갔습니다. 그런데 이를 깃허브를 통해 다른 컴퓨터에서 강의를 이어 들으려고 하는데 cannot resolve symbol 문제가 뜹니다. build.gradle 파일도 제대로 되어 있고, refresh dependency도 해보고 아니면 invalid cache를 하는 등 여러 가지를 해봤는데도 문제가 해결되지 않는데, 어떻게 해야 할까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
build.gradle
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 강의 잘 듣고 있습니다. 자바 버전만 수정해서 빌드그래들 교안 그대로 입력하면 되나요? 자주하는 질문에는 다른 내용이 들어가 있는 것 같아서요
-
미해결스프링 핵심 원리 - 기본편
instanceOf 질문
형관팬 칠해진 부분에서 MemberService.class가 아니라 MemberServiceImpl.class가 와야 맞는거 아닌가요?? instanceOf(인터페이스) 형태인건데 ->MemberService(클래스)로 바뀌어야 하는게 아닌가 해서요
-
해결됨실무 환경 그대로 주문게시판 만들기 웹개발 기초 마스터
개발 환경 세팅 경로
https://drive.google.com/drive/folders/1Z-C-j2O5ukbSbEdl9t0eF4bYtysme8CP?usp=share_link 접속이 안되고 있습니다. ㅠㅠ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
frontcontrollerV3 질문
[질문 내용]안녕하세요. V3 부분을 하다가 문제가 되는 부분을 찾지 못해서 도움을 요청드리기 위해 질문 남깁니다.인텔리제이에서는 문제가 없이 실행이 되는데, 브라우저에서localhost:8080의 V3 회원가입을 누르면There was an unexpected error (type=Not Found, status=404) 가 발생합니다. https://drive.google.com/drive/folders/1LDQPD2zjQm5mwDCrFZLluDEMNpS1U3l-?usp=drive_link
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
실전프로젝트 소스코드 확인부탁드립니다.
현재 실전프로젝트 강의 듣고 있는데요 로그인페이지를 확인하려고 하는데 소스를 확인할수 없네요.https://github.com/onjsdnjs/spring-security-master/tree/3404뜨는데 강의자료가 유실된건가요? 확인부탁드립니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
교재 내용중에 질문 있습니다!
스프링 부트는 DispacherServlet을 서블릿으로 자동으로 등록하면서 모든 경로(urlPatterns="/")에 대해서 매핑한다.참고: 더 자세한 경로가 우선순위가 높다. 그래서 기존에 등록한 서블릿도 함께 동작한다.기존에 등록한 서블릿의 경로가 존재한다면 이 서블릿이 우선으로 동작한다.교재중에 위 내용이 있는데요만약에 HttpServlet을 상속받아 구현한 클래스에 경로를 따로 설정을 했다면 DispacherServlet가 우선 실행되는게 아니라 HttpServlet 을 상속받아 구현한 클래스가 먼저 실행되고 그 후에 DispacherServlet이 실행되는건가요?요청 흐름서블릿이 호출되면 HttpServlet이 제공하는 serivce()가 호출된다.스프링 MVC는 DispatcherServlet의 부모인 FrameworkServlet에서 service()를 오버라이드 해두었다.FrameworkServlet.service()를 시작으로 여러 메서드가 호출되면서 DispacherServlet.doDispatch() 가 호출된다.최종적으로 DispacherServlet의 doDispatch() 함수가 호출된다. 교재중에 위 내용이 있는데요 서블릿이 호출되면 흐름이 HttpServlet의 service()가 호출되는데 이때 service()를 오버라이딩한 자식 클래스의 service()가 호출되고 최종적으로 DispacherServlet의 doDispatch() 실행이 된다 라고 내용을 이해 했는데 맞게 이해한건지 궁금합니다. 감사합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원서비스테스트 질문
MemberServiceTest에서Long saveId = memberService.join(member)의 memberService부분에서 밑줄이 그어지며 Cannot resolve symbol 'memberSerivce' 오류가 납니다.캐쉬도 지워봤습니다. 각각 MemberServiceTest와 MemberService 파일 화면입니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MemberRepository 인터페이스질문 ㅠㅠ 초보적인거라 죄송합니다..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기 인터페이스에 구현된 save findById findByName findAll 이 4가지는 메서드로 정의된건가요 ...?인터페이스는 앞에 접근제어가 없이도 메서드로 정의하는게 가능한건가요 ..?
-
미해결토비의 스프링 6 - 이해와 원리
클래스의 관심사는 하나인게 이상적인가요?
안녕하세요. 하나의 클래스는 무조건 하나의 관심사만 가지는 것이 좋나요? 여러 가지의 관심사를 가지는 경우는 무조건 피해야 하나요? 수업에서 Client가 두 가지 관심사를 가지고 있다고 하셨고 (PaymentService 이용해서 비즈니스 로직 처리 + PaymentService의 내부 의존관계 설정), 후자의 책임은 오브젝트 팩토리로 옮겨버리셨는데요. '하나의 클래스는 하나의 관심사만 처리하도록 코드를 짜는게 좋다'라고 이해해도 괜찮을까요? 하나의 클래스가 여러 가지 관심사를 가져도 되는 경우도 있는지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
key value 값 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]key value에서 key값은 제가 임의로 설정해서 넘길수있는건가요??예를들어 지금 key의 이름이 data라고 되어있는데 그냥 key라고 설정하고 resourses에 있는 hello 파일에 있는 data를 key로 바꿔서 설정해도 괜찮나요??