묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
RequestMappingHandlerAdapter의 Controller 호출 과정
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 대상]영상 기준:03:00 ~pdf 기준:6.스프링 MVC - 기본 기능.pdf의 p.48 RequestMappingHandlerAdapter 동작 방식 그림[질문 내용]안녕하세요, 영한님.제가 가진 '호출'이라는 행위의 동작 방식과 강의(영상 또는 pdf)에서 설명해주신 방식에 괴리가 있어 둘 중 어떤 방식이 적절한 것인지 질문드립니다. 제가 이해한 방식(방식1)RequestMappingHandlerAdapter(이하 핸들러 어댑터)는 Controller(이하 컨트롤러)를 실행(호출)해야 한다.그런데 클라이언트에게 받은 데이터를 그대로 넘기면 컨트롤러가 받아야 되는 파라미터에 맞지 않는다. 따라서 ArgumentResolver(이하 리졸버)를 호출해서 파라미터에 맞게 변환(빨강, 파랑)해달라고 한다.핸들러 어댑터는 리졸버로부터 변환된 빨강, 파랑을 받았다.핸들러 어댑터는 빨강, 파랑을 넘기며 컨트롤러를 호출한다. 강의에서 설명한 방식(방식2)핸들러 어댑터는 컨트롤러를 호출하기 전, 리졸버에게 빨강, 파랑 파라미터를 요청한다.(리졸버가 작업 모두 완료했다고 가정) 핸들러 어댑터가 컨트롤러를 호출한다. 이때 리졸버가 빨강, 파랑을 컨트롤러에게 넘겨준다.-> 이 부분이 '컨트롤러 호출은 핸들러 어댑터가 하는데 중간에 리졸버가 껴서 파라미터만 넘겨준다'로 받아들여지는데 제가 기존에 알고 있던 '호출' 메커니즘과는 다르다고 생각되어서요.제가 영한님이 말씀하신 흐름 자체를 잘못 이해한 건지, 아니면 방식1이 적절한 것인지 질문드립니다! 관련 그림
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
테라폼 설정 파일
강의에서는 테라폼 설정 파일인 main.tf 를 미리 작성해 두신거고 실무에서는 당연히 필요한 내용을 직접 작성해야 하는것이지요?
-
미해결프로덕션 레벨 실시간 채팅 서버 구축: 분산 처리부터 성능 최적화까지 (Kotlin & Spring)
stomp websocket
stomp 웹소캣을 사용할때도 ChatWebSocketHandler를 구현해야 할까요??아니면 raw websocket만 구현하면 되는 건가요??
-
해결됨프로덕션 레벨 실시간 채팅 서버 구축: 분산 처리부터 성능 최적화까지 (Kotlin & Spring)
웹소캣 stomp
raw level 말고 stomp로 개발하고 싶으면 섹션7 부분만 조금 다른게 코딩하면 될까요??
-
해결됨가장 쉽고 깊게 알려주는 Kafka 완벽 가이드 [ By. 비전공자 & Kakao 개발자 ]
이벤트 기반 주문 질문 있습니다.
MSA기반 주문 서비스에서 동기식으로 호출할때 재고 차감 - 쿠폰 사용 - 주문 완료 이런식으로 구성되어 있을때 쿠폰 사용 실패일때는 바로 사용자에게 응답이 가능하다고 생각을 하고 있습니다.하지만 EDA기반으로 재고 차감 - 쿠폰 사용 - 주문 완료를 구현하면 주문이 완료되고 쿠폰사용에 실패가 되어 사용자는 주문이 완료되었지만 다시 실패메시지가 가고 그때서야 이유를 알수 있다고 생각을 하고 있습니다.그래서 사용자 경험 상 동기식이 맞다고 판단되는데 제가 잘못 생각을 하고 있는걸까요?MSA 기반 EDA 주문 구조에서 재고가 부족하여 실패한다면 사용자에게 바로 응답을 해줄수 있을까욤?.
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
AWS 실습시 비용
AWS를 이용한 모니터링 수업에서비용이 20~30 달러 정도 나온다고 하셨는데프리티어를 이용해도 요금이 부과될까요?
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
테이블 의존 질문입니다
안녕하세요 딩코딩코님28. 3-10. 실제 예시 코드로 작성하기 -2 강의 16:30초에서 order_items가ch3_improved_orders 에 의존하도록 구조가 변경이 되어야 할 것이라고 하셨는데ch3_improved_orders가 items를 통해 데이터가 생성이 되는것이므로 ch3_improved_orders 가 items에 의존 되는것이 아닌가요??items가 왜 ordrs에 의존인건지 이해가 가지 않습니다 ㅜㅜ..
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. https://drive.google.com/file/d/1ascl2GoqIRVM8prPCdagjtHuh6gPaulv/view?usp=sharing 콘솔에 나온 jdbc url대로 들어가도 코드에 짠 엔티티 테이블들이 보이지 않아여
-
미해결스프링 핵심 원리 - 기본편
인터페이스랑 구현 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]너무 기초를 질문하는 것 같아 죄송하지만 따로 물어볼 곳이 없어서 여기에 질문 남깁니다. 멤버 서비스와 멤버 레포지토리를 따로 인터페이스를 만들어서 구현체를 만들었는데 둘 다 회원가입과 회원조회의 역할인 것 같은데 굳이 2개로 나누어서 2단계로 거쳐서 가는 이유가 있을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
ddl.sql에 빨간 밑줄
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]ddl.sql 파일에 똑같이 썻는데 빨간 밑줄이 떠요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
welcome page 에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)인프런 질문 게시판에 있는 내용인데 댓글에 제시된 방법으로 했는데도 해결이 안되므로 글 남깁니다.[질문 내용]강의 01:36초에 index.html 작성 후 실행하면 Welcome page로 Hello hello가 나와야하지만 에러가 발생해 글 남깁니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Repository에서 EntityManager 주입 방식 차이
[질문 내용]스프링 db 강의에서는@Repository @RequiredArgsConstructor public class MemberRepository { private final EntityManager em;이 방식으로 했는데, 이 강의에서는@Repository public class MemberRepository { @PersistenceContext private EntityManager em;이렇게 사용하셔서 두 방식의 무슨 차이가 있는지 궁금합니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
AopCheck Test 부분의 EnhancerBySpring 확인 법??
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]17:20 부분에 보면 EnhancerBySpringCGLIB 어쩌구 이렇게 나온다는데프록시로 쓰인다는건 AopCheck Test를 통해서 볼 수도 있고, Assertions로도 확인이 가능한데 저는 로그가 좀 다르게 나옵니다. 다르다기 보다는 19:30:47.432 [Test worker] INFO h.jdbc.service.MemberServiceV3_3Test -- memberService class=class hello.jdbc.service.MemberServiceV3_3$$SpringCGLIB$$0 라고 나오는데, 혹시 EnhancerBySpring~ 이 부분은 어디서 확인이 가능할까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
잘 모르겠습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]자바와 SQL문법도 어느정도 해뵈서 다행히도 영한님이 강의할 때 자바의 문법으로 이해가 됩니다.하지만 스프링에 관한 것들(MVC, 이노테이션, 내장 서버, 스프링이 뭔지 등등) 이것들이 이해가 잘 안 갑니다. 그냥 이런게 있구나만 알아두고 뒤의 강의에서 다 이해하고 넘어갈 수 있을까요??지금은 따라치기만 하면 될까요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
게시글 작성자인지 검증하는 과정은 Validation으로 검증해줘야 하나요?
게시글 작성자인지 검증하는 과정은 비즈니스 로직에 속하는지, 아니면 입력값 유효성 검사에 속하는지 궁금합니다.레이어별로 어떤 검증 책임을 분산하는 게 맞는지 정리하다 보니 애매해서 질문글 올려봅니다.
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
"MemberFinderTest, MemberRegisterTest" record관련
record + 클래스 레벨 @Transactional에서 에러가 발생합니다.!질문은 record 예약어는 final 클래스라서 상속이나 프록시 생성이 불가능한거 같은데@Transactional 어노테이션은 Spring AOP기반이라 프록시 객체 생성이 안되서 에러가 발생하는거 같은데... 강의에서는 통과가 되더라구요 제가 어떤 부분이 놓쳤을까요?
-
해결됨죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
allowStartIfComplete 질문
킬구형 안녕,강의를 보다가 궁금한 점이 생겨서 문의를 남겨. "정리하자면, allowStartIfComplete은 식별 파라미터 없이 Job을 재시작한 경우에만 적용되는 옵션이다." 이 문장을 보고 궁금증이 생겼는데,identifying JobParameters 가 없어서 Job 그리고 그 하위 Step 들이 다시 수행될수도 있겠지만, Job => Step A (성공) / Step B (실패) 여서 잡을 재시작하는 케이스에서,Step A 가 allowStartIfComplete true 면 A부터 스텝을 수행할텐데, 이 케이스에서도 allowStartIfComplete 를 쓰는게 아닌가 싶어서 문의를 남겨!이러면 Spring Batch 6 에서도 의미있는 파라미터가 아닌가 싶어서! (강의 잘보고 있습니다, 감사합니다!!)
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
롬복과 사용자 정의 setter 메서드
강의 23:03분에서 setMember(Member member)라는 setter 메서드를 작성하는데요.제가 기억하기로는 @Setter를 설정하면 자동으로 필드 이름을 딴 setXXX()인 setter가 만들어지는 것으로 알고 있습니다.그러니까 현재 Member 필드가 있으니까 롬복인 @Setter 에 의해 setMember(Member member)가 자동으로 생성되지 않을까 생각하는데요. 제가 생각한게 맞다면 이때 강의에서 만든 setMember(Member member)와 충돌? 이런 문제는 없나요? 시그니처까지 똑같은 것 아닌가요?아니면 이런경우 사용자가 직접 만든 것이 더 우선시 되는건가요?
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
2장.작전1. 실행시 오류에 대해서 문의.
,로분리된 csv파일로 하고 public FlatFileItemReader<SystemFailure> systemFailureItemReader( @Value("#{jobParameters['inputFile']}") String inputFile) { return new FlatFileItemReaderBuilder<SystemFailure>() .name("systemFailureItemReader") .resource(new FileSystemResource(inputFile)) .delimited() .delimiter(",") .names("errorId", "errorDateTime", "severity", "processId", "errorMessage") .targetType(SystemFailure.class) .linesToSkip(1) .strict(true) .build(); }----------실행하면, 오류가 발생합니다.PS D:\Test\springboot\kill-batch-system> ./gradlew bootRun --args='--spring.batch.job.name=systemFailureJob inputFile=d:/Test/springboot/kill-batch-system/system-failures.csv'.....Caused by: org.springframework.batch.item.file.transform.IncorrectTokenCountException: Incorrect number of tokens found in record: expected 5 actual 1..... PS D:\Test\springboot\kill-batch-system> 그런데, \t으로 구분하고, .delimiter("\t")로 하면 정상작동합니다. 이유가 뭘까요?윈도우 환경입니다.그리고, 실행시 파일의 위치를 절대경로로 주어야 하나요?상대경로일경우, 파일의 위치를 어디에 두어야 하나요?
-
해결됨토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
인터페이스
안녕하세요! 이번 강의 수강 중 서비스 인터페이스에 대해 궁금하여 글을 남기게 되었습니다. 흔히 스프링 프로젝트에서 보통 Service 인터페이스와 ServiceImpl 구현체로 나누어 개발하며 제가 참여하게 된 프로젝트 또한 이러한 구조였습니다.이미 이전 개발자 분께서 Service 인터페이스와 ServiceImpl 구현체로 나눠놓은 상태였고, 제가 A 기능의 AServiceImpl 안에 특정 서비스 로직이 비대해짐에 따라 해당 코드가 명확하지 않다고 생각되어 메서드로 분리하게 되었습니다. A 엔티티의 상태, 계산 등의 로직으로 private 메서드를 두었습니다.여기서 동료와 의견이 갈렸습니다:동료 입장:1. ServiceImpl 안의 모든 메서드는 반드시 인터페이스에 있어야 한다.2. 인터페이스는 외부·내부 구분이 아니라, 구현체가 제공하는 기능을 보장하는 것이므로 전부 담아야 한다.3. 내부 메서드를 둘 거라면 굳이 인터페이스로 추상화할 필요가 없고 그냥 클래스로 쓰면 된다.제 입장:1. 인터페이스에는 “외부 계약(=공개 API)”만 있어야 한다.2. 구현체 내부에서만 쓰이는 로직은 private으로 감추는 게 맞고, 외부에서 호출할 필요가 전혀 없다.3. 인터페이스를 구현체 내부 헬퍼까지 다 포함하면, 오히려 계약이 불필요하게 비대해지고 역할이 모호해진다.핵심 쟁점저는 public 메서드는 모두 인터페이스에 있어야 한다는 데에는 동의합니다. 또한, 단순 public, private 만 있다면, 인터페이스의 역할이 모호하다는 것또한 이해하지만, 이전 코드와의 일관성과 운영 중인 시스템에 대한 변경이 필요할정도의 중대사항이라고 생각하지 않습니다.궁금한 점은 private/내부 헬퍼 메서드까지 인터페이스에 강제로 올리는 게 맞는지, 인터페이스를 사용하는 의의가 궁금합니다. 긴글 읽어주셔서 감사합니다.