묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
미스터 KILL-9 Processor 단 질문이 있다
안녕하신가 미스터 KILL-9항상 빠르고 친절한 답변 고맙다 이번에 회사 로직 작성중에 조금 막막한 부분이 있어 질문 하러 왔다 reader 엑셀 파일 읽어오고processor 에서 해당 엑셀 데이터 값을 가지고 dao 호출해서 검증하고, 깍고(가공)마지막으로 쓰기 처형하는데 작업을 하는데문제는 가공 단계에서 dao 를 직접 호출하면ExecutorType 이 simple 로 호출되고 쓰기 단계에서 batch 로 ExecutorType 실행되어 에러가 발생한다Cannot change the ExecutorType… 이렇게 말이다..그래서 일단 아래 코드 처럼 해결은 했어 우선 기존 코드는 PoiItemReader -> ItemProcessor<> (여기서 mybatis dao 호출 해서 검증작업도 함) -> MyBatisBatchItemWriter -> 에러 Cannot change the ExecutorType… 해결한 코드 PoiItemReader -> ItemProcessor<> (여기서 mybatis dao 호출 해서 검증작업도 함) -> JdbcBatchItemWriter-> (해결)그런데 이렇게 작성해도 되려나 싶네.. 그리고 String 문으로 쿼리 짜는것도 맘에 안들고..ㅠㅠ
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
오타발견
- 명백한 한계점 (단점): - 네트워크 대역폭 소모: 실제 데이터를 전송하므로 네트워크 부하가 극심하다. 데이터 건수가 많거나 크기가 크면 통신 자체가 병목이 될 수 있다. ("핵탄두 데이터 전송에 따른 통신망 과부하 주의!") - Manager 읽기 병목: Manager 혼자 모든 데이터를 읽어야 하므로, 읽기 자체가 느리다면 원격 청킹은 효과가 없다. ("중앙 정찰 위성의 스캔 속도 한계!") - 복잡성(감시와 디버깅의 지옥문): 역시 미들웨어(Kafka 등)와 프링 인티그레이션 설정이 필수적이다.프링 인티그레이션 ->스프링 인티그레이션
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
OIDC의 id token에 담긴 데이터에 대해
안녕하세요.질문 먼저 요약하자면,id token 에 scope에 포함된 유저 정보가 같이 포함되어 넘어오는게 일반적인지, idtoken 검증만 진행한 뒤 액세스토큰으로 따로 조회하는게 일반적인지 궁금합니다. 1년쯤 전에, 소셜 로그인의 흐름을 이해해보기 위해 스프링 시큐리티 없이 카카오, 네이버, 구글 로그인을 적용해본 적이 있습니다.원래 카카오와 구글은 OIDC를 지원했고, 네이버는 OIDC가 없었는데 최근에 추가되었더라구요.그래서 OAuth2 스펙으로만 구성된 네이버 로그인 코드를 OIDC를 적용한 코드로 수정하고 있었는데.. 그러다가 의문이 생겨서 질문을 드리게 되었습니다. 저는 여태까지 필요한 유저 정보의 scope를 "openid" 항목과 함께 프로바이더에 전달하고,id token을 프로바이더로부터 전달받고, 그걸 검증한 뒤 id token에 담긴 유저 정보를 사용하면 된다고 생각하고 있었습니다.실제로 카카오와 구글은 유저의 email 정보가 id token 페이로드에 담겨있었구요. 네이버 역시 https://nid.naver.com/.well-known/openid-configuration 의 메타데이터 중 scopes_supported 항목을 확인했을때 profile이라는 scope가 존재해서, 코드 요청할때 scope=openid+profile 을 파라미터로 전달했습니다.그런데 id token을 확인해도 유저의 정보가 나오지 않더군요. 처음에는 단순히 네이버가 이 부분을 미구현했나? 생각을 했는데, 좀 찾아보니 id token에는 최소한의 신원만을 포함하고 세부적인 프로필은 따로 조회하는게 맞다는 말도 있더라구요. 그래서 질문을 올리게 되었습니다.
-
해결됨카카오 개발자(면접관)와 함께하는 워크플로우 기반의 대용량 트래픽 처리 기법
중복 컨슘 방지에 대해서 여쭤보고 싶습니다!
만약 카프카를 사용하고 있고 처리 실패하는 경우 retry 큐로 보내서 재시도 하는 방식을 사용하고 있다고 가정하겠습니다. 만약 서버가 메시지를 받아서 처리하던 중에 리밸런싱이 발생했습니다. 메시지를 성공적으로 처리했고 커밋을 하려했지만 리밸런싱이 발생해 커밋을 하지 못했습니다. 그럼 그 메시지는 다른 컨슈머가 다시 받아서 중복으로 처리할 수 있을것 같은데 어떻게 방지를 할 수 있나요..? 찾아보니 인박스 패턴이라는것이 있던데 메시지를 받았을 때 상태를 저장하고 이후에 재시도를 해도 상태값이 있다면 패스하는 방식으로 이해를 했습니다. 하지만 위에 상황에서 첫 컨슘에서 메시지를 처리하고 있다가 리밸런싱이 발생했고 이후에 다시 처리할 때 상태값이 있어서 패스 했습니다. 하지만 이후에 첫 컨슘에서 처리중에 예외가 발생했다면 어떻게 처리를 해야할까요...?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
타입 에러 시 BindingResult
지식 공유자님의 코드에서는 FieldError 생성자의 네 번째 파라미터(bindingFailure)가 전부 false로 놔둔 이유는 만약 타입 에러가 나서 바인딩이 실패한 필드는 컨트롤러 메서드의 코드를 실행하기 전에 이미 BindingResult에 들어가 있기 때문에 굳이 코드를 안 적어도 되는 것인가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
멤버서비스테스트 부분에서 막힙니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 제목 그대로 오류가 나구요. 원본 코드를 옮겨봐도 의존성 문제인지 오류가 납니다 https://drive.google.com/file/d/1yRhCS0euBPt9YqDHOrYB4kE9A3-QcBjR/view?usp=drive_link
-
미해결
스프링이 기본으로 사용하는 in-memory 세션 저장소에 대한 자료를 얻고 싶습니다.
스프링의 기본 세션 저장소에 대해 깊게 이해하려 조사하던 도중 공식 문서만으로는 이해하기 쉽지 않아 질문글을 올려봅니다.참고하기 좋은 자료가 있을까요?
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
여러 엔티티의 조합으로 리포트를 제공해야할 때
안녕하세요 실무에서 헥사고날을 적용 예정 중에 있습니다. 이미 DB 모델링이 되어 있고 하나의 우리 팀 시스템이 아닌 여러 팀의 시스템에서 같은 테이블을 바라보는 경우 헥사고날 적용은 어떻게 해야하는지 궁금합니다. 하나의 애그리거트로 만들 수 없는 여러 엔티티의 조합으로 조회를 할 경우, 예를 들어 백오피스에서 20개 이상의 조건과 각 조건이 여러 테이블에 나뉘어져있어 Join을 걸어야 할 경우의 도메인 모델과 리턴은 어떻게 해야하는지 궁금합니다.
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
예제 빠진부분?
KILL-9: "이 구성이 매우 중요하다. Job 설정을 보면, logFileManagerStep()이 먼저 실행되고, 그 다음에 mergeOutputFilesStep()이 실행되도록 .next() 메서드로 연결되어 있다.없어도 뻔해서 이해되긴하는데,위의 예제에서 Job빈이랑 LogFileManagerStep빈(이건 일부러?) 빼먹은듯?KILL-9: "이 구성이 매우 중요하다.로 검색하면될거야------그리고 그냥 궁금한건데,이번강의챕터가 컨셉자체는 맘에드는데(코드랑 내용이랑 같이 스토리넣어서 말하는거)인프런 강의 시스템상 너무 보기힘들지않아?부록 2: 전장 구축 - Redis to MongoDB 데이터 이관 작전 환경 설정같은거보면,나는 가로휠이 있어서 괜찮았는데 가로휠마우스가 없으면 마우스 드래그로 컨트롤하거나 키보드 화살표로 조금씩 밀어야하는데 이거 너무 보기 힘들거같아스크롤바도 내용화면이 한페이지를 넘어가면 안보이고 그래서다음거 스카이넷보고서인지 그런식으로 개행을 넣던가 하면될거같긴해킬구<스카이넷 ?다음거 원격 파티셔닝 강의 대부분 그냥 서두보고 다 스킵할거같은데,@ConditionalOnProperty로 조건부 빈생성 관리하는거 스킵되는거 아까운데 이거나 줏어가라고 마지막 부록에 넣어줄만하지않음?나도 그냥 내용 대충 훑어만봤는데 저거하나는 건진거같아서
-
해결됨토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
Member와 MemberDetail 엔티티를 나누는 기준에 대해
안녕하세요.강의 정말 잘 들었습니다. 강의를 듣다가 궁금한 점이 있어 질문 남깁니다.Member와 MemberDetail을 별도 엔티티로 분리한 기준이 궁금합니다.관계가 1:1인 경우에는 엔티티에 너무 많은 필드가 있는 것이 아니면 하나로 관리하는 게 더 개발 편의성이 좋지 않을까? 하는 생각이 들기도 합니다. 실제로 회원 정보 수정 시에 닉네임, 프로필 주소, 자기소개를 한 번에 변경하도록 구현되어 있어, 두 엔티티가 함께 조회/수정되는 것처럼 보입니다.혹시 조회 성능 최적화를 위해 접근 빈도가 낮은 데이터를 지연 로딩하려는 의도인지, 아니면 회원의 본질적 속성(email, status 등)과 부가 정보(등록일시, 프로필 등)를 개념적으로 구분하기 위한 설계인지 궁금합니다.감사합니다.
-
미해결스프링 핵심 원리 - 기본편
생성자 자동주입 관련해서
public class OrderServiceImpl implements OrderService { MemberRepository memberRepository; private final DiscountPolicy discountPolicy; public OrderServiceImpl(MemberRepository memberRepository) { this.memberRepository = memberRepository; discountPolicy = new FixDiscountPolicy(); } private final MemberService memberService=new MemberServiceImpl(memberRepository); @Override public Order createOrder(Long memberId, String itemName, int itemPrice) { Member falsemember = memberService.findMember(memberId); Member member = memberRepository.findById(memberId); int discount = discountPolicy.discount(member,itemPrice); return new Order(memberId,itemName,itemPrice,discount); } } 2회독이라서, 15강을 들으면서 자동주입관련해서 생각이 나서, 강의를 들으면서 자체적으로 작성해봤습니다. MemberRepository를 주입해서 의존성 문제를 해결하려고 여러방면으로 고민하던중 왜 falseMember를 구하는 로직 중 MemberService 부분에서 계속 널 포인터익셉션이 터지는지 이해가 가지않아 질문드립니다.MeberServie의 구현체에도 레포지토리를 주입받아서 널포인터 익셉션이 안터지는 것이 정상이라고 생각되는데 원인 말씀해주시면 감사드립니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
인터셉터에서 HttpServletRequest 교체 방법
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]1. 우선 스프링 인터셉터에서 parameter 로 들어오는 request 를 변경 가능한지 궁금합니다.client 측에서 암호화된 데이터를 전송하고 암호화된 데이터를 복호화를 하고 싶은데, 모든 controller 에 하기 불편해서 interceptor 를 활용해 적용해보려고 합니다. 근데 request 자체를 교체하는건 어려운 것 같은데 이런 경우에는 어떤 방식을 채택하는 것이 좋을까요?
-
미해결스프링 시큐리티 OAuth2
loadUser 중 Missing attribute 'preferred_username' in attributes 에러 발생
55강 수강 중 client credentials 방식으로 변경 후 테스트 시 이런 에러가 발생합니다. 왜 그런걸까요 ㅜㅜ
-
미해결스프링 핵심 원리 - 고급편
final 키워드 사용 관련 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]프록시 기술과 한계 - 스프링의 해결책 강의에서프레임워크 같은 개발이 아니라 일반적인 웹 애플리케이션을 개발할 때는 final 키워드를 잘 사용하지 않는다라고 하셨는데요, 다른 자료로 공부할 때 유틸 함수를 모아두는 유틸 클래스의 경우에는 상속이나 오버라이드를 막기 위해서 final 클래스와 static 메서드 등으로 사용하는 것도 좋다고 배웠습니다.영한님께서는 유틸 기능들도 순수 자바 클래스/메서드 보다는 스프링 컴포넌트로 관리하는게 좋다고 생각하시는 편인가요?
-
해결됨모든 웹 개발자가 봐야 할 단 한 장의 지도
추가 강의 요청
안녕하세요, 선생님.강의 잘 들었습니다. 많은 도움이 되었습니다. 감사합니다.현재 저는 IT 영업 직무로 근무하고 있습니다.회사에서 운영하는 프로그램을 SaaS형, API 연동형, SI 구축형의 세 가지 방식으로 판매하고 있습니다.SaaS형의 경우 프로그램 기능을 익히면 비교적 단순한 영업이 가능하지만,API 연동형이나 SI 구축형 영업의 경우 웹의 흐름과 인프라 구조에 대한 이해가 필요할 때가 많습니다.이런 이유로 IT 용어나 개념을 익히려 노력하고 있으나,내용이 생소하고 설명이 어렵게 느껴져서 어려움을 겪고 있습니다.다행히 개발 직군은 아니어서 깊은 기술 지식까지는 필요하지 않지만,고객사 IT 담당자와 원활하게 커뮤니케이션할 수 있을 정도의 이해도는 갖추고 싶습니다.혹시 선생님의 강의 중에서 이런 상황에 도움이 될 만한 강의가 있을까요?만약 없다면, 어떤 방식으로 공부를 시작하는 것이 좋을지도 조언 부탁드립니다.
-
해결됨모든 웹 개발자가 봐야 할 단 한 장의 지도
용어 질문드립니다.
강의 해주셔서 감사합니다!강의 내용중에 인스턴트 와 JOSN을 설명주셨는데,따로 찾아봤는데 어렵게 설명이 되어있어서쉽게 설명해주실 수 있나요?특히 인스턴트는 무슨말인지 도저히 모르겠습니다..
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
한꺼번에 선택해서 버튼을 누르는게 좋은 선택인지? 아니면 나눠서 버튼누르는게 좋은 선택인지??
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 궁금한점이 생겨서 질문을 드립니다.셀렉트, 싱글, 라디오 버튼을 만드는 예제에서, 상품을 한번에 등록하는것을 보았는데요. 오늘 생각해 보니까 나눠서 할때도 있다는 생각이 듭니다.(배송할때 페이지가 나누어져 있는게 생각이 났습니다) 그래서 궁금증은 만약에 어떤 것들을 등록할때 나눠서 페이지를 보여 줄수 있고, 페이지를 합쳐서 보여줄수 있다면 어떤게 좋은것인지?그리고 나눠서 보낸다면 어떤식으로 결과값을 저장해서 다음 페이지로 넘기는지 궁금합니다. 답변 부탁드립니다.
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
핵사고날 아키텍처 책을 추천해주실 수 있으실까요??
안녕하세요 토비님언제나 헥사고날 아키텍처는 무엇이고 이걸 적용한다는 것이 왜 좋고 왜 필요하다는 것인지궁금했습니다. 이번 강의를 통해서 대략적인 흐름 어떻게 적용할 것인지 어떤 방향으로 작업 해야 하는지 살짝 이해할 수 있었습니다 조금 더 이해도를 높이고 싶은데.. 혹시 토비님께서 추천하시는 서적이 있으실까요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
@PostMapping("/members/new")가 동작하지 않습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 올바르게 작성한 것 같은데 등록 버튼 클릭 시 홈으로 돌아오는 것도, sysout 내용이 콘솔에도 찍히지 않습니다 ㅜㅜ
-
미해결스프링 핵심 원리 - 고급편
안녕하세요
안녕하세요@Around가 포인트컷이고그밑에 메소드가 어드바이스가 맞을까요? 그렇다면 @Around가 포인트컷에 조건에 해당하는 곳에 프록시가 생성되고 비즈니스 로직이 실행이된다고 생각되는데 예전에는 프록시가 생성되는 지점 포인트컷 , 비즈니스 로직이 적용되는 포인트컷 조건이 있는 걸로 설명을 들었는데 @Around가 포인트컷이 프록시가 생성되는 포인트컷과 비즈니스 로직이 적용되는 포인트컷 두개의 의미가 모두 들어있는걸까요?감사합니다