묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
FakeRepository 작성 방법
DB에 의존하지 않는 FakeRepository를 구현할 때 JPARepository의 작동 원리를 고려하여 직접 코드를 작성하는걸로 이해했는데, 그렇다면 FakeRepository에 복잡한 쿼리를 쓰는 메소드가 필요하다면 그때마다 코드를 만들어줘야 하나요?? 예를 들면) 아래와 같은 메소드를 FakeRepository에서 구현하여 Test하고 싶을 때는 어떻게 하는 건가요?@Query(value = "SELECT * FROM (SELECT * FROM customer ORDER BY like_total DESC) WHERE ROWNUM <= 3", nativeQuery = true) List<UserEntity> findTop3ByLikeTotal();
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
V4. forEach 문을 람다로 표현하는 방식을 알고싶어요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의 : 주문 조회 V4: JPA에서 DTO 직접 조회result.forEach()를 사용해서 루프를 돌렸는데, 혹시 forEach 말고 람다식으로 돌리는 방식을 알고싶어서 질문을 남깁니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
데이터 접근 예외 직접만들기 코드 질문있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. public void create(String memberId){ try{ repository.save(new Member(memberId,0)); log.info("saveId = {}",memberId); }catch(MyDuplicateKeyException e){ log.info("키 중복, 복구 시도"); String retryId = generateNewId(memberId); log.info("retryId = {}",retryId); repository.save(new Member(retryId,0)); }catch(MyDbException e){ log.info("데이터 접근 계층 예외",e); throw e; } } private String generateNewId(String memberId){ return memberId + new Random().nextInt(10000); }현재 이런식으로 중복된 Id가 있다면 그 뒤에 랜덤한 숫자를 덧붙여서 새로운 Id를 만들어서 재시도 하는것으로 이해했습니다.사실 완전 중복되는것을 막으려면 실제로는 UUID같은것을 생성하면 된다고 생각하지만..이 문제의 경우에서, 새롭게 만든 Id마저도 중복이 되면 오류가 나는것을 확인했습니다.만약 예외가 발생해서 해당 예외를 복구하기위해 재시도를 했으나 그것마저도 실패하는 경우에는 catch구문안에서 또 try~catch를 해야하는건가요?.. 어떤 방법이 있는지 궁금합니다.읽어 주셔서 감사합니다
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
회원가입 성공 후 redirect이동시 권한 질문
19강을 듣고 있는데 문제가 생겨서 질문 드립니다@PostMapping("/sign-up") public String signUpSubmit( @ModelAttribute @Valid SignUpForm signUpForm, Errors errors if (errors.hasErrors()){ return "account/sign-up"; } Account account = accountService.processNewAccount(signUpForm); accountService.login(account); // 권한 : Authorities=[ROLE_USER] 반환 성공 log.info("@@@ 권한"+ SecurityContextHolder.getContext().getAuthentication().toString()); return "redirect:/"; } 리다이렉트 직전에 로그를 만들어 권한을 찍어보니 Granted Authorities=[ROLE_USER]가 반환되는데, 리다이렉트를 한 곳에서는 로그에 권한을 찍어보니 [ROLE_ANONYMOUS]라고 나옵니다ㅠ..문제를 알 수 있을까요?
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
정상처리 예외반환
테스트코드에서 정상처리 되었을때 예외를 반환하는데이 예외는 service에있는 로직을 호출하면 잔고부족 때문에 메서드 자체에서 예외를 던진 것으로 알고있습니다.근데 만약 테스트에서 테스트 코드가 아니라 진짜 사용을 하는 사용자라면 이 던진 예외는 어떻게 처리가 되는것인가요 ??그리고 왜 정상로직에서는 예외를 던지고 잔고부족로직에서는 잡는지 궁금합니다. 정상로직에서는 잡으면 안되는 것인가요 ?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
if 구문에서 return 사용과 관련한 질문입니다.
강의 17:18 쯤에 나오는@Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("FrontControllerServletV1.service"); // / front-controller/v1/members String requestURI = request.getRequestURI(); ControllerV1 controller = controllerMap.get(requestURI); if (controller == null) { response.setStatus(HttpServletResponse.SC_NOT_FOUND); // 404 return; } controller.process(request, response); }이 코드에서 if 구문 내부에 return만 사용하셔서 탈출하도록 하신거같은데 return response.setStatus(HttpServletResponse.SC_NOT_FOUND); 라고 표현해도 상관없을까요?=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
뷰를 찾을때
@RequestMapping("/response-view-v2") public String responseViewV2(Model model) { model.addAttribute("data", "hello"); return "response/hello"; } response/hello 를 찾을 때, 정적 리소스에서 먼저 찾은다음 없으면, 동적에서 찾는걸로 순서가 정해져 있나요? 아니면 response/hello 가 정적인지 동적인지 판별하고 정적 또는 동적 리소스 폴더 아래에서만 찾는건가요?
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
AuthenticationManger - HttpSecurity 사용
customFilter 메소드에 http를 전달받는 부분은 무시하라고 하셨는데강의 자료에도 http를 인수로 넘기는 부분이 그대로 있어서, 이건 수정이 필요한 부분인가요?다른 질문이 또 있습니다.HttpSecurity 사용과 직접 생성의 차이점이 궁금합니다.직접 생성 방식우리가 생성한 필터?(CustomAuthenticationFilter이게 맞는지는 모르겠지만)를 통해 인증을 진행할 때 ,직접 생성한 AuthenticationManger를 사용해서 인증을 진행하도록 한다고 이해했습니다. 이게 맞나요?http.formLogin을 통해 FormLoginConfigurer를 설정하는 부분이 있던데,UsernamePasswordAuthenticationFilter가 DaoAuthenticationProvider를 사용하지만,우리가 만든 CustomAuthenticationFilter가 사용하는 AuthenticationManager에도 DaoAuthenticationProvider를 사용하니까 여기서 처리되도록 한 것인가요? 굳이 formLogin 부분이 추가된 이유를 명확하게 잘 모르겠습니다.HttpSecurity 사용 방식여기서는 AuthenticationManager를 AuthenticationManagerBuilder를 통해서 생성하는데,이 authenticationManager는 그럼 기본적으로 AuthenticationProvider들을 갖고있는게 있나요? 생성 후 따로 넣어주는 authenticationProvider들이 없는 것 같아서 이해가 잘 안됩니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
소스코드 받을 수 있나요
자바강의처럼 소스코드 받아보고 싶은데 혹시 업데이트 해 주실 수 있으신가요? 만약 안된다면 이유가 뭘까요
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
db, jdbc, jpa 등 관계 정리 문의
현재 트랜잭션관하여 강의를 듣고있는 중입니다. jdbc 트랜잭션 코드랑 jpa 트랜잭션 코드랑 다르다고 하셨는데 이 부분에서 관계정리가 안되거 같아 질문드립니다.위의 사진처럼 이해하면 되나요?? jpa에서 자체적으로 데이터소스를 관리하는지 jdbc 트랜잭션 코드라고 설명을 해주셨는데 여기서 jdbc가 의미하는게 데이터소스 코드를 의미하는지 위의 두개의 질문도 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
변경 감지와 병합 강의대로 코드를 작성한 후 잘 되던 상품수정이 안됩니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]현재 페이지상에서 회원, 상품, 주문에 대한 모든 코드가 잘 작동되고 있는 상황입니다. 그 중 상품수정이 원래 잘 되었으니 강의 내용 중 변경 감지와 병합 코드를 작성해 본 후 잘 상품을 등록하고 목록에 보이는데 수정을 하면 에러가 나는데 해결으 못하고 있어서 글을 남깁니다. 전체 코드도 함께 남기겠습니다.https://drive.google.com/file/d/1kZe8QTmGrdlldqF5gaMomyVlWPtoBhTK/view?usp=sharing
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
핸들러 조회할 때
이전 강의까지 다수의 @Controller가 존재했는데, 요청된 url로 가장 먼저 RequestMappingHandlerMapping이 등록된 url을 찾는 방법이 어떻게 되나요? @RequestMapping(url)도 빈으로 등록되어서 찾는건가요? 아니면 모든 @Controller 빈 을 무작위로 조회하고 그 안의 요청과 맞는 @RequestMapping(url)을 찾으면 그 @Controller의 클래스를 handler로 매핑하는 방식인가요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
의존관계주입
공부를하다가 제대로 이해하고있는건지 확인하고싶어 질문드립니다!JDBC템플릿도 그렇고JPA에서 의존관계주입시, 리포지토리안에서 JPAQueryFactory를 생성해 엔티티매니저를 주입받아 사용합니다.지금은 config에서 의존관계설정을 다하는데 이걸 스프링부트가 해주게되면 스프링컨테이너에 올라가있는 리포지토리,서비스,컨트롤러를보고 적절하게 생성자 파라미터에있는 이 엔티티매니저를 생성해 주입해주는것인가요??
-
미해결Practical Testing: 실용적인 테스트 가이드
Dto 사용에 관하여
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요 강사님 강의 코드를 작성중 궁금한 점이 생겨 질문드립니다.강의 예제 코드에서는 Dto를 예를 들어 OrderResponse 이런 식으로 Response, Requset를 생성해서 작성하셨는데 실무에서도 이런 방법으로 하시는 지 궁금합니다.예로 프로젝트가 커지게 된다면 Order에 대해서도 많은 Request, Response가 발생하게 되어 저는 OrderDto 클래스를 두고 OrderDto클래스 속 static inner 클래스로 여러 Dto 클래스를 만들어서 사용했습니다. 이와 같은 방법은 추천 안하시는 지 궁금합니다.또 Dto클래스를 record로 작성하는 경우도 봤는데 record를 사용하는 방법은 어떠한지 궁금합니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
HashMap을 사용한 MemoryItemRepository에서 순서 보장 문제와 테스트 실패 가능성 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요, "프로젝트 구조 설명3 - 테스트" 강의에서 ItemRepositoryTest 클래스안에 코드라인 88번 test(String itemName, Integer maxPrice, Item... items) 함수에서 사용되어진 containsExactly 함수는 참이기 위해서 모든 값이 같아하고 그리고 주어진 값들의 순서역시 같아야 한다고 이해를 하였습니다. 근데 여기에서 궁금한점이 MemoryItemRepository에서 HashMap을 사용한 경우 입력되어진 값들의 순서가 보장되어 지지 않아서 어떠한 경우에는 테스트 findItems이 값들의 순서가 일치하지 않아서 실패하는 것이 아닌가에 대해서 궁금증이 생기어서 질문을 남깁니다. 감사합니다 :)
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
JDBC 질문 드립니다.
안녕하세요. 현재 9강까지 강의를 들은 상태입니다.다름이아니라, 현재 9강까지는 JDBC를 사용하는 부분을 학습하고 있는데요. 여기서 JDBC를 사용한다는게 구체적으로 어떤것을 의미하는지 질문드립니다.JDBC를 사용한다는것이 DriverManager를 사용하는것을 말하는것일가요? 아니면 DriverManager뿐만아니라, Connection, PreparedStatement, ResultSet를 사용하는것을 말하는것일까요? 헷갈려서 질문드립니다..!
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
csrf 통합에서 html 소스코드 있을까요?
안녕하세요.현재 csrf 통합까지 듣고있는 학생입니다올려주신 pdf 파일을 봤을 때 소스코드가 없어서 문의드립니다.코드를 보면서 강의를 들으면 더 잘 이해가 될 것 같은데 어디서 얻을 수 있나요?ㅜㅜ
-
해결됨Practical Testing: 실용적인 테스트 가이드
테스트 대상
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요 강사님강의 13분초 쯤 productType에 대해 test를 하시는데 이 때 HANDMADE와 BAKERY에 대해서만 테스트를 진행하셨는데 BOTTLE에 대해서는 안해도 될까요?? 실무에서는 어떻게 하는 지 궁금합니다. 뭔가 추가해주어야 할 거 같아서요!
-
해결됨스프링 시큐리티 완전 정복 [6.x 개정판]
JSP를 사용하는 경우 정적 자원 보호를 어떻게 설정해야 하나요?
프로젝트에서 WEB-INF/ 하위에 jsp 파일들을 저장할 때 SecurityConfig 에서 http .authorizeHttpRequests((requests) -> requests .requestMatchers("/css/**", "/js/**", "/images/**", "/WEB-INF/**", "/fonts/**").permitAll()) 이렇게 WEB-INF 하위 디렉토리도 permitAll로 설정해 줘야 하는지요? 아니면 다른 방법을 사용하나요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
후하 제머리로는 좀 어렵네요 mysql 설치
mysql 설치가 커뮤니티보고 다해봐도 다안돼네요 ㅠㅠ혹시 2024년 버전 해결방안 있나요?