묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
PT 문의사항
안녕하세요! 수업 잘 듣고 있습니다.PT하실때 쓰신 툴이 무엇일까요?너무 깔끔하고 좋은 것 같습니다.
-
미해결스프링 핵심 원리 - 기본편
다음 강의 뭘 들어야 할까요
안녕하세요 저는 컴퓨터공학과 2학년을 마친 학생입니다.아직 진로는 잘 못정했지만 프론트보단 백엔드가 맞는거 같아서 백엔드를 해보려고 합니다.현재 강사님의 자바 중급2편까지 수강하였고 이번에 스프링 기본강의를 들었습니다. 다음에 들을 강의를 선택하려고 합니다.처음 유튜브 커리에서 설명하신대로 스프링 커리큘럼대로 mvc를 들으려고 했는데 스프링-기본편 다음으로 챕터에서 야생형 코스를 추천하신다 하여 무엇을 들어야할지 고민되어 질문 드립니다. 현재 저는 DB관련해서는 이번 방학때 sqld를 딸 게획을 하고있고 현재로선 DB지식이 많진 않은 상태입니다. + 개발 경험은 많이 없습니다. 그냥 jpa 커리 야생형을 따라가면 될까요 ㅠㅠ
-
해결됨카카오 면접관이 알려주는 MSA 관점에서의 분산 트랜잭션 패턴
강의 11 질문
강의의 시퀀스 다이어그램을 보았을 때, 2가지 정도 질문 드립니다. 1) stateless 요청에서 상태값의 전달 관련일반적으로 웹과 같이 stateless 한 서비스를 고려했을 때, 비동기 처리로 인해 주문서비스가 고객의 주문요청에 대해 (이후의 수행작업과 상관없이) 즉시 리턴하게 되는 것이 예상되는데요. (위 그림에서는 동기적인 flow 로 주문완료 응답을 end point 유저에게 전달하는 것으로 보이긴 합니다만) 주문 완료 페이지에서 주문한 상품 정보나 결제 수단의 상태값 전/후 를 보여주는건 어떤 식으로 동작하게 될까요? 가령, 실물 상품이 아닌 연속선상의 사이버 재화(ex: 네이버포인트 등)를 지급해야하는 입장에서 주문 이전의 재화 정보와 주문 요청 후(최종적으로 트랜잭션 완료된 후의) 증/감 재화 정보를 유저에게 보여주어야 할 수도 있는데, 뒷단의 비동기 작업(이벤트 subscribe)을 수행하는 스레드랑 최초 주문 요청을 받는 요청스레드가 다른 부분에서 고려해야할 것이 더 있을 것 같은데요. 얼핏 생각했을 때는, 사용자에게 즉시 내려주는 응답 페이지는 PENDING 에 해당하는 페이지 UI 로 (ex: 결제 진행중... 표시) 전달하고, 사용자 PENDING 페이지(클라이언트)에서 몇초 단위의 주기적인 서버 요청 등으로 완료 이벤트를 조회 하도록 처리하여 완료페이지로 리다이렉션 처리되는 방식이 될까요? 이 때, 중간 상태값은 별도 캐시서버등에 저장을 해야 할 것이고요. (리다이렉션 되는 완료페이지와 PENDING 페이지의 state가 또 다르므로)2) 메시지 브로커(카프카) 를 쓸 때 고려사항주제랑 좀 벗어난 걸 수는 있는데요, 보통 메시지 발행의 정확성을 위해 CDC (Change Data Capture) 를 설정하는 것이 일반적인 방식으로 알고 있습니다.다만, 현재 서비스중인 DB 의 설정이나 부하 이슈로 CDC 를 쓰지 못하는 경우에는 어떤 방식으로 처리가능할지가 궁금합니다.
-
해결됨카카오 면접관이 알려주는 MSA 관점에서의 분산 트랜잭션 패턴
강의 첨부파일 문의
11번 강의처럼 첨부파일 내려받았을 때 시퀀스 다이어그램 이미지 등이 없는 경우가 종종 존재합니다.첨부파일이 없는데 아이콘표시가 달린건지 누락된건지 알 수 있을까요?
-
해결됨죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
@StepScope 또는 @JobScope와 JobOperator
킬구형아래는 step에서 ItemWriter의 jobParameter자리에 null을 넣는 방식으로 처리한거야. @Scheduled(cron = "0 0 19,22 * * *") fun runSampleJob() { jobOperator.start(sampleJob(),jobParameters) } @Bean fun sampleJob(): Job = JobBuilder("sampleJob",jobRepository) .start(sampleStep()) .build() @Bean fun sampleStep(): Step = StepBuilder("sampleStep", jobRepository) .chunk<String, String>(CHUNK_SIZE) .transactionManager(transactionManager) .reader(sampleReader()) .writer(sampleWriter(null, null)) .build() @Bean @StepScope fun sampleReader(): JdbcPagingItemReader<String> = JdbcPagingItemReaderBuilder<String>() ... .build() @Bean @StepScope fun sampleWriter( @Value("#{jobParameters['title']}") title: String?, @Value("#{jobParameters['content']}") content: String?, ): ItemWriter<String> = ItemWriter { chunk -> ...doSomeWrite }위 코드를 빈 주입방식으로 변경하는 방법을 모르겠어.빈 주입 방식으로 변경하면 아래처럼 되잖아?이때 jobOpterator로 잡을 호출하는 부분까지 파라미터가 올라와버리는데 이걸 어떻게 해야할지 모르겠단 말이야~~!@Scheduled(cron = "0 0 19,22 * * *") fun runSampleJob() { jobOperator.start(sampleJob(**여기를 어떻게 처리하지?**),jobParameters) } @Bean fun sampleJob( sampleStep: Step ): Job = JobBuilder("sampleJob",jobRepository) .start(sampleStep) .build() @Bean fun sampleStep( sampleReader: ItemReader<String>, sampleWriter: ItemWriter<String> ): Step = StepBuilder("sampleStep", jobRepository) .chunk<String, String>(CHUNK_SIZE) .transactionManager(transactionManager) .reader(sampleReader) .writer(sampleWriter) .build() @Bean @StepScope fun sampleReader(): JdbcPagingItemReader<String> = JdbcPagingItemReaderBuilder<String>() ... .build() @Bean @StepScope fun sampleWriter( @Value("#{jobParameters['title']}") title: String?, @Value("#{jobParameters['content']}") content: String?, ): ItemWriter<String> = ItemWriter { chunk -> ...doSomeWrite }새해 복 많이 받아 형~
-
해결됨스프링 핵심 원리 - 기본편
프로토타입 빈, 직접 destroy 호출 안 할 경우
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 스콥이 프로토타입이면, 초기화 까지만 스프링 빈에서 관리를 하고 이후에는 관리를 하지 않아 후반부에서도 보면 직접 instance.destroy()를 호출하지 않으면 관리 대상이 아니라 종료를 해주지 않고 있습니다. 물론 스콥 주기의 빈을 많이 사용하진 않겠지만, 정말 많은 스콥 생명주기의 빈을 생성하고 직접 종료를 해주지 않으면 메모리를 계속 잡아먹고 있는걸까요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
@repository 어노테이션
안녕하세요 강의를 듣던중 궁금한것이 생겨서요,해당 프로젝트 구조를보면 di주입을 config에서new 키워드를 통해 repository 클래스를 직접 인스턴스화해서 주입해주고있고 구현체에 해당하는 인스턴스를 생성한후추상화된 repository를 빈에 등록해서호출하여 사용하는 형식으로, 특정 구현체에 의존되지 않게 해주고있는데요 근데 가만생각해보니실제 MemotyItemRepository에 보면@Repository 어노테이션을 사용하고있는데해당 어노테이션을 사용하면 자동으로 빈에 등록해주는 역할을해주는걸로알고있는데 config 에서 직접 new 를 통해 주입해주고있는데굳이 왜 빈에 등록해야하는거지?라는 의문이 들어서요 MemoryItemRepository에서@Repository 어노테이션을 사용하지 않아도전혀 문제가 없을것같은데 굳이 왜 사용하는 건지 궁금합니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
강의 마지막 QueryDSL 사용 부분 질문있습니다
JPA를 사용하는 강의라고 하지만 QueryDSL에 대한 코드만 딱 보여주고 이게 어떤 dependency를 추가하고 build를 해서 사용해야한다는 등의 설명이 일절 없는것이 아쉽습니다. 강의 교재에도 해당 내용은 기재되어있지 않은데 왜 코드를 실제로 적용하는 부분에 대해서나 테스트 코드 작성에 대해서는 따로 언급이 없으신건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 좋은 강의로 공부하고 있는 대학생입니다. 이번 영상에서 ItemService 클래스의 updateItem 메서드에서 값을 변경하는 부분을 각 변수에 대해 set 으로 접근하는 방법 대신 item 클래스 내부에서 change() 메서드를 선언 후 사용하는 방법으로 직접 수정해보려고 합니다. 그런데 만약 클라이언트에서 isbn과 author 값을 수정하고 싶다면, item 도메인에서는 두 변수에 대한 선언이 안되어있는데 item 엔터티 구조를 변경하는 방향으로 수정 로직을 작성해야 할지 궁금해서 질문 남깁니다.
-
해결됨[Lv1] 면접에서 '설명할 수 있는' Spring Boot - 경험으로 답변하는 백엔드 개발
남은 수업은 언제 올라올까요,,
남은 수업은 언제 올라올까요? 빨리 듣고 싶습니다.ㅎㅎ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
도메인 모델 패턴 vs 트랜잭션 스크립트 패턴
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]주문 서비스에서 주문, 주문 취소 메서드 비즈니스 로직이 엔티티에 있는데 이렇게 엔티티가 비즈니스 로직을 가지는 도메인 모델 패턴과 서비스에서 비즈니스 로직을 처리하는 트랜잭션 스크립트 패턴 중에 실무에서는 보통 어떤 것을 사용하나요? 각각의 장단점이 있는지도 궁금합니다
-
해결됨[Lv1] 면접에서 '설명할 수 있는' Spring Boot - 경험으로 답변하는 백엔드 개발
데이터베이스 교육자료
수강평 남기고 디코에 인증했는데 db lv0 파일은 어떻게 받을수 있을까요
-
미해결스프링 핵심 원리 - 기본편
beanB
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]beanB.java에서 애초에 @Component가 안붙어서 빈으로 관리가 안되지 않나요?예를 든다고 하면 @Component를 붙히고 @MyExcludeComponent를 붙여야지 이해가 더 쉬울 것 같습니다....!! 제가 틀릴 수도 있는데 감히...!!조심스럽게 여쭤봅니다..!!
-
미해결스프링 부트 - 핵심 원리와 활용
@Counted 초기화
안녕하세요 강사님이 하시는것처럼 @Counted를 사용해서 메트릭을 수집하는데스프링 애플리케이션을 다시 실행하면 과거에 획득한 메트릭을 0으로 초기화되어서 처음부터 시작되더라고요.그런데 이러면 나중에 비즈니스 메트릭을 똑바로 수집하지 못하지 않나요?애플리케이션을 다시 시작해도 메트릭을 0부터가 초기화하는게 아니라 계속 누적되면서 하는 방법도 있나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
섹션3번 수업에 대한 질문입니다.
이 수업 처음에 form-start에서 시작하라고 하셨는데 form-start에서는 Item.java에 선언되어있는 내용이 부족해서 이걸로는 수업이 진행되지않습니다. form으로 시작하기에는 코드를 따라서 칠수가없구요...=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@Autowired 보다 더 좋은 방법이 어떤 걸까요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]정리 영상 중 Bean등록을 @Component, @Autowired를 설명해 주시면서 더 좋은 방법이 있다고 말씀하셨습니다.다만, 저는 현재 사용하는 방법은 @Autowired 같은 생성자 주입인데. 더 좋은 방법은 어떤걸까요?@RequiredArgsContructor도 같은 생성자 주입을 사용하는 것으로 알고있습니다.. 더 좋은 방법은 어떤걸까요?
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
[수업 자료 질문] Cache Aside의 특징 문의
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 6-4. 캐싱의 개념 3 2. 어려움을 겪는 부분어떤 개념이 헷갈리시나요?수업 자료를 보면 "Cache Aside는 구현이 간단하고 캐시 효율이 뛰어납니다. 하지만 데이터가 변경되었을 때 실시간으로 반영되지 않아 데이터 불일치 가능성이 있습니다."고 하는데, 왜 Cache Aside가 구현이 간단하고 캐시 효율이 뛰어난지 잘 이해가 가지 않습니다. Cache Aside에서는 애플리케이션 단에서 컨트롤을 다 해야 해서 구현이 길어지지 않나요? Cache Aside가 다른 전략과 비교했을 때 캐시 효율이 뛰어난 이유가 있을까요? 3. 시도해보신 내용문제 해결을 위해 어떤 시도를 해보셨나요?데이터 변경시 데이터 불일치에 대한 설명이 있는 것을 보면 혹시 해당 부분 설명은 Cache Aside보다는 Write Around Aside 에 대한 설명에 더 가깝지 않을까하는 생각도 해보았습니다.
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
[수업자료 문의] RedisTemplate으로 SETNX 시 리턴값 문의
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 6- 12 여기까지 이해하신 내용은 무엇인가요? RedisTemplate으로 SETNX를 할 수 있고, 이 때의 리턴값은 boolean이다. 2. 어려움을 겪는 부분어떤 개념이 헷갈리시나요?수업 자료에는 RedisTemplate을 통해 SETNX 요청시 키 존재 유무와 상관없이 모두 True를 리턴한다고 설명 3. 시도해보신 내용문제 해결을 위해 어떤 시도를 해보셨나요?혹시 키가 이미 존재하면 RedisTemplate에서는 False 를 리턴하는 것이 아닐까요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
타입컨버터 가 람다랑 비슷해 보이는데 저의 생각이 맞는지?.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (모름)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. 말 그대로 타입 컨버터 가 고급3편에 배운 람다랑 비슷해 보여서 글을 남김니다. 이유는 타입 컨버터를 배우면서 ,자바 고급3편 이 계속 생각났습니다. 그래서 자바 고급 3편을 찾아보니 , 필터(값이 트루면 통과), function(t,r), map(a->b로)을 찾을 수 있었는데요 저의 생각이 맞는지 궁급합니다.답변 부탁드립니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
기본 생성자
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]JPA의 기본 스펙은 엔티티에 기본 생성자가 필수라고 했는데다른 엔티티는 다 생략되어있고 왜 Address에서만 명시를 하는건가요?