[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요, 질문이 생겨 여쭤봅니다. 외래키가 있는 곳을 연관관계의 주인으로 설정하라 하셨는데, 만약 외래키가 없는 두 엔티티가 1대1 관계라면 이때는 랜덤으로 연관관계의 주인을 설정하면 되는 것일까요 ?
getInputStream() 과 getParameterNames() 를 함께 사용 시, 순서 상 뒤에 있는 메서드에서는 출력이 안되는 상황을 발견했습니다 저의 추측으로는 두 메서드 모두 스트림으로부터 데이터를 싹 가져와서 그런 거 같습니다 테스트 해보니 getParameterValues() 메서드 역시 마찬가지고요 질문1) 우선 상기 추측이 맞나요? 이번에는 getInputStream() 과 getParameter() 를 테스트 해봤습니다 역시나 같은 결과였지만 한 가지 의문이 있습니다 username 과 age 두 가지 데이터에 대해 서버로 보냈을 때 서버 측에서는 getParameter(username) 만 해도 age 에 관해서는 getInputStream() 에서 출력되지 않음을 확인했습니다 질문2) getParameter() 를 최초 실행하게되면 스트림에 있는 데이터를 싹 가져와 특정 컬렉션(Map 일까요?)에 담고 이후부터는 컬렉션에서 바로 찾는 식인가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 제가 부트캠프에서 프로젝트를 진행할 때 테스트 코드를 짜긴 했었는데 거의 지식 없이 짰던지라 controller랑 service만 단위 테스트로 짰고 통합 테스트는 안 했습니다. 단위 테스트는 class 단위 어노테이션에 SpringBootTest를 안 쓰는게 맞는건가요? 제가 그렇게 했었거든요. @SpringBootTest는 통합 테스트일 때만 쓰는 건지, 어떤 경우에 쓰는 어노테이션인 지 궁금합니다.
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/ 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/ 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/ [질문 내용] 여기에 질문 내용을 남겨주세요. 질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/ 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/ 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/ 프로젝트 생성의 13:24의 실행이 되지 않습니다. Cause: class java.util.concurrent.ExecutionException cannot be cast to class java.lang.RuntimeException (java.util.concurrent.ExecutionException and java.lang.RuntimeException are in module java.base of loader 'bootstrap') java.lang.IllegalArgumentException: Could not create problems-report directory '/build/reports/problems' * 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.13/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. BUILD FAILED in 55ms 1 actionable task: 1 executed 두가지의 오류가 뜨는데 어떻게 해결해야할까요?
전에 배웠던 쓰레드 내용과 함께 질문드립니다 사용자로부터 요청이 오면 쓰레드 풀로부터 쓰레드를 할당을 받고 이 쓰레드가 HttpServlet 클래스에 있는 public void service 를 실행하고 그 안에서 수업 시간에 직접 재정의한 protected void service 가 실행된다고 이해하면 될까요? 제일 궁금한 점은 Http 요청이 올 때 서블릿 코드를 수행하는 쓰레드가 처음으로 실행하는 메서드가 무엇인지 입니다
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 현재 주문 기능 테스트에서 JUnit5를 이용하여 테스트 중입니다. 앞선 강의(회원 기능 테스트)에서 JUnit으로 테스트할때 메모리 DB 사용한다고 application.yml 을 test 쪽에 복사해서 사용할때도 url: jdbc:h2:mem:testdb 부분을 주석해도 돌아간다고 했었던 것으로 기억이 납니다. 그래서 TEST 시에는 DB를 연결 안해도 무방하다고 생각하고 있었는데요. 오늘 주문 기능 테스트시 DB 끄고 했더니 에러가 나서 DB 연결했더니 정상적으로 동작합니다. TEST에서도 DB를 연결해주어야 하는 걸까요?
안녕하세요, 토비님 강의 정말 잘 보고 있습니다. 하나 궁금한 점이 있어서 질문드립니다. 헥사고날 아키텍처(Hexagonal Architecture)를 도입할 때, Specification 패턴 과 Strategy 패턴 을 함께 사용하는 것에 대해 어떻게 생각하시나요? 좋은 선택이 될 수 있을지, 아니면 둘 중 하나만 선택해서 사용하는 것이 더 나은 접근일지 고민하고 있습니다.두 패턴을 함께 사용하는 사례나 장단점에 대해 조언해주시면 감사하겠습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 아니오 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요 현재 맥북 M2 모델로 강의를 따라가고 있는데 인텔리제이에 변경사항을 저장 후 실행 or 테스트를 진행 시 변경 사항이 적용되지 않는 문제점이 계속 발생하고 있습니다. 따라서, 변경 사항이 생기고 저장한 후 인텔리제이를 계속 껐다가 다시 켜는 방식으로 하고 있는데 너무 불편해서 해결 방법이 있는지 여쭙고 싶어서 글 남깁니다..!
예외 발생 후 ExceptionResolver 에서 ModelAndView에 값을 주지 않고 반환시 뷰를 랜더링하지 않고 WAS에 정상 응답으로 돌아가고 WAS에서는 sendError() 이 호출됐었으니 ErrorPage를 찾고 그에 맞는 요청을 하고 BasicErrorController에서 다시 뷰를 랜더링 할텐데요. 만약에 ModelAndView에 값을 준다면.. ModelAndView가 그 값에 맞는 뷰를 랜더링 하고 화면에 보여준 후 WAS에서 진행한 ErrorPage의 뷰도 보여주는건가요..? 그럼 제가 보는 입장에서는 두개의 화면이 렌더링되어 보게되는 걸까요? 더해서 이것이 맞다면, ModelAndView에서 뷰를 랜더링 해서 이미 처리 완료했는데 sendError 때문에 또 다시 ErrorPage를 처리하기 위해 뷰를 랜더링하는 상황이 좀 이상하게 느껴지는데 이게 정상인가요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 스프링핵심원리 HTTP웹기본지식 MVC1편 스프링DB 1편 수강완료 했고 ORM표준JPA프로그래밍 완강 목표로 수강중입니다. 혼자 프로젝트를 하나 만들어보고 싶은데 JPA활용1편까지는 수강을 하고 시작하는게 좋을까요? 아니면 실전 스프링 데이터 JPA를 수강하는게 좋을까요?
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 4강 트랜잭션과 락 트랜잭션과 락 관련 챕터를 수강 중입니다. 쿠폰 동시성 발급 사례를 보여주셨는데, 락이 필요하고, 왜 동시성 문제가 일어나고 어떻게 해결하는지에 대해 이해하고 있습니다. 쿠폰 동시성 발급 사례에서 코드를 보면 단순히 max값을 보고 current값을 증가하는 코드를 이용해 "락이 걸려있지 않아 의도대로 동작하지 않음"을 보여주시는 것 같습니다. 이런 사례 관련해서 많은 사람들이 "낙관적 락", "비관적 락"에 대해 공부하고, "비관적 락으로 해결"로 마무리를 하는 것 같습니다. 근데 저는 비관적 락이 아니라, query를 직접 작성해서 SELECT와 UPDATE를 한번에 사용할 수 있지 않을까 라는 관점에서 "원자적 업데이트"를 사용했습니다. 비관적 락: select + for update -> update 원자적 업데이트: update + where current < n 물론 select와 update를 한 번에 해결하는 상황이 아니라, 로직이 중간에 추가되면 비관적 락을 써야된다는 것을 알고 있습니다. 하지만 다른 사람들의 블로그를 보면 하나의 쿼리로 해결할 수 있는 상황을 비관적 락으로 해결하는 게 맞는건가 라는 의문이 들었습니다. 아무튼 이런 배경에서 질문은 아래와 같습니다. 비관적 락이 아니라 원자적 업데이트 라는 말을 이력서에 쓰면 더 도움이 될까요? 실제는 SQL 쿼리 하나 작성한건데, 비관적 락이 더 있어보이는 느낌인 거 같다...? 비관적 락으로 해결해야 되는 상황을 만들고 싶은데, select와 update 사이에 어떤 로직을 추가해야할까요? 기획을 변경 가능한 상황입니다! 외부 API: 결제말고 다른 거... 문자 알림? 다른 테이블 조회 또는 업데이트: SQL join문 잘 짜면 해결되는 거 아닌가... 위 내용과 관련해서 작성한 블로그 글입니다. https://velog.io/@suhwani/QRworld-동시성-해결-원자적-업데이트 감사합니다!
☠ 질문 가이드 ☠ " 시스템 종결자의 지령이다. 질문하기 전에 이 규칙들을 숙지하도록. " 1. 코드 실행에 문제가 있다고? 전체 코드를 보여줘라. 단편적인 에러 메시지만으로는 아무것도 알 수 없다. 실행 환경도 알려달라. JDK 버전, 스프링 버전 등을 함께. 2. 오타를 발견했나? 즉시 제보하도록. 자네같은 날카로운 눈을 가진 동료가 필요하다. StepExecution stepExecution = contribution.getStepExecution(); ExecutionContext stepExecutionContext = stepExecution.getExecutionContext(); Integer infiltrationCount = (Integer) stepContext.get("infiltrationCount"); JobExecution jobExecution = stepExecution.getJobExecution(); jobExecution.getExecutionContext().put("totalInfiltrations", infiltrationCount); 혹시 stepExecutionContext가 stepContext인데 이름이 오타가 난게 맞는지?? 7강 자료에서 찾은것이다. 3. 질문은 자유롭게 "이런 걸 물어봐도 될까요?" 같은 소심한 멘트는 불필요하다. 궁금한 건 바로 물어봐라. 배치 시스템에 소심한 건 없다. 4. 검색은 기본 비슷한 질문이 있는지 먼저 확인하도록. 하지만 이해가 안 된다면? 주저하지 말고 추가 질문해라. GPT가 거짓말친다고? 나에게로 오라. 💀 5. 서로 존중하라 여기는 모두가 시스템을 지배하고자 하는 동료들이다. 서로를 이해하고 돕는 문화를 만들어가자. ⛔ 인프런 서비스 자체에 대한 문의는 1:1 문의하기로. 💀 그쪽 서버는 막강한 CTO가 있어 건드리지 않는 게 좋을 거다 💀 - KILL-9 올림 P.S. 존댓말로 질문하면 rm -rf를 시전한다. 편하게 물어보도록. 강의에서 놓친 부분이나 더 보충하면 좋을 내용도 자유롭게 제보하라. 너희의 피드백이 이 강의를 더 강력하게 만든다. 🔥 시스템을 함께 진화시켜 나가자. 🔥
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요, 원리부터 차근차근 설명해주신 덕분에 스프링 소스 코드도 살펴볼 수 있을 것 같습니다. 감사합니다. 다름이 아니라 이 섹션과 다음 섹션을 듣고 나서 학습한 내용을 정리하려고 보니 잘 이해했는지 확실하지 않은 부분이 생겨 질문드립니다. 이해한 바는 다음과 같습니다. FrontController 패턴 도입 동기 많은 컨트롤러에서 사용하는 공통 처리 로직을 보일러플레이트 없이, 누락 없이 사용하기 위함. 궁금한 부분은 다음과 같습니다. 이 문제를 언급하신 필터와 인터셉터로도 해결할 수 있을 것 같은데, 왜 FrontController 패턴을 사용하는지 궁금합니다. 뒤에 호출되는 컨트롤러의 구조가 HttpServlet으로 제한되지 않기 때문이라고 현재 생각하고 있습니다. 스프링에서 공통 로직을 도입할 때 실제로 DispatcherServlet(FrontController)을 확장하는 방식으로 처리하는지도 궁금합니다. 감사합니다.