inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

@StepScope 질문

미해결

죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.

@Bean public Step systemDestructionStep( SystemInfiltrationTasklet tasklet // Tasklet을 주입받는다 ) { return new StepBuilder("systemDestructionStep", jobRepository) .tasklet(tasklet, transactionManager) .build(); } @Slf4j @Component @StepScope // Tasklet에 StepScope를 달았다 public class SystemInfiltrationTasklet implements Tasklet { private final String targetSystem; public SystemInfiltrationTasklet( @Value("#{jobParameters['targetSystem']}") String targetSystem ) { this.targetSystem = targetSystem; } @Override public RepeatStatus execute(StepContribution contribution, ChunkContext context) { log.info("{} 시스템 침투 시작", targetSystem); return RepeatStatus.FINISHED; } } 여기서 @StepScope를 tasklet에 작성하는 이유가 있나요? 아래 방식처럼 Step에 @StepScope를 작성하면 안되나요? @Bean @StepScope public Step systemDestructionStep( SystemInfiltrationTasklet tasklet // Tasklet을 주입받는다 ) { return new StepBuilder("systemDestructionStep", jobRepository) .tasklet(tasklet, transactionManager) .build(); }

  • java
  • spring
  • spring-boot
  • spring-batch
  • backend
이동연 댓글 2 좋아요 1 조회수 227

인터셉터 질문

미해결

스프링부트를 이용한 웹 프로그래밍: 웹사이트 이렇게 만드는 거예요!

강의 잘보고있습니다. 감사합니다 인터셉터와, 필터가있는데 인터셉터로 적용한 이유가 있을까요 ?? -- 그리고 인터셉터 설정할때 @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(memberSigninInterceptor) .addPathPatterns("/member/modify"); } 지금 상황에선 excludePathPatterns 설정을 굳이 안해줘도 문제가없지 않나요 ? 강의에서는 해주셨는데

  • rest-api
  • spring-boot
  • jpa
  • spring-security
  • mybatis
H K 댓글 2 좋아요 0 조회수 142

안녕하세요 선생님 게시글 목록 API-페이지 번호 구현 강의에서 질문 있습니다.

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

안녕하세요 선생님 좋은 강의 감사합니다. 저희 articleController에서 readAll 부분을 보면 @GetMapping("/v1/articles") public ArticlePageResponse findAll( @RequestParam("boardId") Long boardId, @RequestParam("page") Long page, @RequestParam("pageSize") Long pageSize ) { return articleService.readAll(boardId, page, pageSize); } 이런식으로 pageSize를 쿼리 파라미터로 넘겨주도록 설계가 되어 있는데, pageSize라는 파라미터는 값을 받아서 처리하는 것이 아니라, 서버에서 값을 정하고 항상 똑같은 pageSize를 써야하는 것 아닌가요 ?? 왜 pageSize를 인자로 받는지 이해가 잘가지 않습니다.

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
김태우 댓글 2 좋아요 0 조회수 145

안녕하세요 ! 강의 잘 듣고 있습니다.

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

안녕하세요 선생님 강의 잘 듣고 있습니다 . controller를 구현하실때 중복되는 부분을 전부 다 쓰신 이유가 따로 있으신가요 ? 예를 들어 ArticleController에서 @RequestMapping("/v1/articles") public class ArticleController{ ... } 이런식으로 RequestMapping 애노테이션을 붙여 중복을 줄일 수도 있는데 선생님은 전부 다 그냥 쓰셔서 어떤 의도가 있는 것인지가 궁금합니다.

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
김태우 댓글 2 좋아요 0 조회수 79

DTO 내 생성자 관련 질문입니다.

해결됨

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] @Data static class OrderDto { private Long orderId; private String name; private LocalDateTime orderDate; private OrderStatus orderStatus; private Address address; private List<OrderItemDto> orderItems; public OrderDto(Order order) { orderId = order.getId(); name = order.getMember().getName(); orderDate = order.getOrderDate(); orderStatus = order.getStatus(); address = order.getDelivery().getAddress(); orderItems = order.getOrderItems().stream() .map(orderItem -> new OrderItemDto(orderItem)) .collect(Collectors.toList()); } } 생성자 관련한 질문입니다! 생성자에서 orderItems = order.getOrderItems().stream() .map(orderItem -> new OrderItemDto(orderItem)) .collect(Collectors.toList()); 이와 같은 코드를 작성하셨는데 , Dto 에 보통 Lombok 이용해서 생성자 자동생성을 사용하게 되는데, 이것처럼 손으로 작성하게 되면 생성자(Constructor)LomBok 은 사용하지 않는건가요? 아니면 생성자 자동생성 lombok 을 사용하면 위의 손으로 작성한 코드처럼 자동생성이 되는건가요?

  • java
  • spring
  • spring-boot
  • jpa
6udguin 댓글 1 좋아요 0 조회수 85

엔티티 조회와 fetch join 의 경우 이런 상황일 때 유의하여 사용하면 될까요?

해결됨

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] V3 예시에서 N+1 문제를 보여주셨습니다. N+1 문제가 발생한 원인과 상황을 설명들으며 생각해보았는데, 1.마이페이지 (회원 단건 조회, 회원정보(member), 최근주문(order) ) 이런 데이터만 보여준다면 n+1 문제는 발생하지 않을 거 같습니다. 다만 1.마이페이지 (회원 단건 조회, 회원정보(member), 최근주문(order) , 최근주문별 배송현황(delivery)) 는 [회원조회] [최근주문A][최근주문B] 이때 각 최근주문별 딜리버리를 조회하여 또 쿼리가 많이 나가게 되는 상황이 발생할 거 같습니다. 단순한 단건 데이터 조회(내정보)는 엔티티 조회를 사용해도 N+1 문제에서 자유로울 수 있으나 작성자 등의 PK가 전부 다른 데이터 리스트에서의 join 형식 데이터 목록을 조회할 경우 N+1 문제가 자주 발생할 거 같습니다. 이럴 때 fetch join 을 사용하면 되는건가요?

  • java
  • spring
  • spring-boot
  • jpa
6udguin 댓글 2 좋아요 0 조회수 97

수업 방식 질문

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

맨 마지막 섹션 19는 그냥 차례대로 읽으면서 진행하면 되는건가요 ? 어떻게 학습을 해야 하는건가요 .. ;; 그리고 이번에 새롭게 강의 내셨던데 기존거랑 뭐가 다른건가요 ? 얼마전에 강의 산 사람은 어떻게 하나요 ?

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
  • rabbitmq
돈벌고싶다 댓글 1 좋아요 0 조회수 171

스프링부트 부분은 리뉴얼되진 않은건가요?

미해결

코드로 배우는 React 19 with 스프링부트 API서버

안녕하세요. 강의가 리뉴얼 되었다고 해서 다시 보고있습니다. 리뉴얼 해주셔서 감사합니다. 혹시 리액트 부분만 리뉴얼 되고 스프링부트 부분은 리뉴얼 된 부분이 없는건가요? 감사합니다.

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
tjdwnsdks 댓글 1 좋아요 0 조회수 109

OrderServiceTest에서 assertTrhwos 질문이 있습니다~

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니오 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요. Junit5로 assertThrows테스트를 하고 있습니다. 원래는 다른 분들처럼 assertThrows만 작성했습니다. (리턴 없는 형태) 테스트는 성공하는데 에러 로그가 전~혀 하나도 뜨지 않습니다. 고민하다가 에러 내용을 받아서 soutv로 뿌려줘서 확인했습니다. assertEquals로 비교하는게 맞나요? 아니면 제가 모르는 Junit5 사용법이 따로 있는건지요? gpt, 구글 등등 다 검색해봐도 답을 알 수 없어서 고민하다가 질문 올립니다. 조언 부탁드립니다 감사합니다~

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
김아란 댓글 1 좋아요 0 조회수 69

ID는 Transactional 으로 rollback이 안되나요 ?

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

@Transactional 을 써주면 Test 후에 data가 반영 되지 않고 rollback 되는거라고 이해했는데요, id 값은 계속 올라가는데 이건 왜그러는걸까요 ..?

  • java
  • spring
  • mvc
  • spring-boot
혜진 댓글 1 좋아요 0 조회수 92

RESTful 강의는 안하시는 건지 궁금합니다.

미해결

실전! 스프링 데이터 JPA

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (아니오) [질문 내용] 안녕하세요 강사님. 혹시 RESTful 내용에 대해서는 강의를 안하시는지 궁금합니다. 제가 지식이 정말 얕고 좁지만 대학 프로젝트를 스프링부트로 진행하다 보면, 정말 어렵고 헷갈리고 갈팡질팡하게 되는 것이 RESTful 내용인 것 같습니다. 방금도 ResponseDTO를 어떻게 설정해야 할지 정답이 없으니 더 머리 아프고 어떻게 하는 것이 좋을까 고민하다가 금방 지쳐버리고 오는 길입니다. 강사님이 RESTful에 대해 강의해주신다면 좋을 것 같아 질문글 남깁니다. 메뉴얼은 안읽어봤습니다 죄송합니다. 감사합니다.

  • java
  • spring
  • spring-boot
  • jpa
Alal11 댓글 2 좋아요 0 조회수 177

강의 듣다가 도커 이미지 생성시 각각도 가능하나 그렇게 사용하는데가 많은지 모르겠다라는 말을 듣고 남김니다

미해결

호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)

당연히 구글링 해보셨져? 원하는 결과를 못찾으셨나요? 어떤 검색어를 입력했는지 알려주세 문제가 발생한 코드(프로젝트)를 Github에 올리시고 링크를 알려주세요. 현업에서 도커를 사용해 개발해오지는 않았어서 강의를 듣다가 의문이 들어서 문의 남김니다 다른 강의를 봤을때는 nginx, db, jar를 각각 만들어서 이미지들을 각각 격리하여 사용하고 상황에 따라 추가 생성하여 사용한다고 본거 같은데요 그렇게 사용하는데는 각각의 영역을 독립적으로 관리하기 위해서 한다고 봤구요 하나의 서버에서 직접 nginx+mysql+jar 설정등을 직접 하다가 도커 설정을 따로 이미지 만들어서 작업한다고 봤을때는 생소하기도 했습니다 근런데 강사님은 한꺼번에 한다고 말씀하시니 좀 헷갈리긴 하네요 현업에서는 주로 어떻게 쓰는건가요 ?

  • aws
  • spring-boot
  • jpa
  • spring-security
  • docker
lim_hook 댓글 2 좋아요 0 조회수 190

로그레벨 외의 Logger 분리 질문

해결됨

개발자에게 필요한 로그 관리

안녕하세요! 강사님 강의 잘 듣고있습니다. 몇가지 궁금한게 있어서 질문드려요. 로그를 내용에 따라, Logger 분리를 하는 방법 (Access.log, app.log, security.log, error.log 등등) 도 있는 것으로 알고 있는데요. 실무 API 서버경우에도 이렇게 로그레벨 이외에 Logger 분리를 하는 방법을 많이 사용하시는지 궁금합니다. 1번과 연관된 질문으로, 복잡한 실무 ELK 환경에서는 어플리케이션 로그의 경우, 한가지 로그에 몰아서 하는 방식을 많이 사용하는지, 각각 로거로 분리하고 elasticsearch index도 분리하는 방식을 많이 사용하는지 궁금합니다.

  • spring-boot
  • elasticsearch
  • logstash
  • Kibana
  • logback
dgyoon 댓글 2 좋아요 1 조회수 144

동적 테이블에 대한 질문

미해결

실전! 스프링 데이터 JPA

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 궁금한게 있어서 질문 드립니다. 테이블을 년도별로 나누어야 하는 경우 예) person2025, person2026 파티션 테이블도 있겠지만 장기적으로는 나눠야 한다면, 이 경우 하나의 Entity로 테이블을 동적으로 변경 해서 사용하는 방법이 있는지 아니면 Native Query 쿼리로 하는지 실무에서는 어떻게 하는지 궁금합니다.

  • java
  • spring
  • spring-boot
  • jpa
pakapoki 댓글 1 좋아요 0 조회수 108

프로젝트 규모가 큰 경우 @SpringBootTest 실행 속도 문제

해결됨

Spring Boot TDD - 입문부터 실전까지 정확하게

안녕하세요, 강사님. 저는 백엔드 1년 차 주니어 개발자입니다. 강사님 덕분에 TDD 학습을 차근차근 진행하고 있는데, 한 가지 궁금증이 생겨 질문드립니다. 현재 강의에서는 매번 API 기능을 구현할 때마다 @SpringBootTest 를 사용하여 테스트하고 계신데요. 만약 프로젝트 규모가 엄청 커져서 컨텍스트 로딩 시간이 5초 이상이 소요되는 경우, 테스트 결과를 기다리느라 “ 개발 흐름이 끊기는 ” 문제가 발생할 것 같은데요. 현업에서는 이 부분을 어떻게 관리하시는지 궁금합니다. 매번 @SpringBootTest 를 그대로 사용하며 시간을 감수하시는지 특정 테스트만 빠르게 실행하는 슬라이스 테스트( @WebMvcTest 등)를 병행하시는지 그 외 다른 최적화 기법이 있는지 조언 부탁드립니다. 😊

  • tdd
  • spring-boot
  • 아키텍처
  • junit
denia park 댓글 1 좋아요 2 조회수 1720

(질문아님)Windows에서 Elasticsearch 하는 법

미해결

실전에서 바로 써먹는 Elasticsearch 입문 (검색 최적화편)

Docker를 설치한다. = 설치 방법은 구글링에 "Windows Docker 설치"만 검색해도 많은 자료가 있습니다. vim 설치 = 기본적으로 windows는 리눅스 환경이 아니기 때문에 CMD 또는 Powershell에서 강의처럼 vim을 사용하지 못합니다. 아래 링크를 통해서 설치만 해주고 프롬프트에 vim 입력하시면 사용 가능합니다. https://velog.io/@deadkim/windows-vim-windows%EC%97%90%EC%84%9C%EC%9D%98-vim-%EC%82%AC%EC%9A%A9

  • spring-boot
  • elasticsearch
  • devops
  • elk
  • infrastructure
병훈 댓글 2 좋아요 0 조회수 154

페이지네이션 시 조회 과정 질문

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

현재 페이지네이션 기반 조회 시 조회 과정이 궁금해서 질문드립니다. secondary index에서 offset 위치까지 순차탐색 -> secondary index -> 클러스터링 인덱스에서 primary key 조회 -> 실제 데이터 조회 일단 위 과정이 맞는지 궁금합니다. 2 . 위 과정이 맞다면 이 과정에서 db에서 데이터 조회를 limit만큼 반복하는 것인지, 아니면 실제 db에서 데이터 조회는 한 번에 이루어지는 것인지 궁금합니다. 페이지 조회 말고 그냥 범위 조회일 시에는 한 번에 조회되서 값이 많아도 시간 차이가 많이 안나는지 궁금합니다. offset 없이 조회해보니 바로 조회되는 거 같긴합니다.

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
yso829612 댓글 2 좋아요 0 조회수 107

값이 안변해요

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. @Test void updateTest() { update(184717674569289728L); ArticleResponse response = read(184717674569289728L); System.out.println("response = " + response); } void update(Long articleId) { restClient.put() .uri("/v1/articles/{articleId}", articleId) .body(new ArticleUpdateRequest("hi 2", "my content 22")) .retrieve(); } @Getter @AllArgsConstructor static class ArticleCreateRequest { private String title; private String content; private Long writerId; private Long boardId; } @Getter @AllArgsConstructor @NoArgsConstructor static class ArticleUpdateRequest { private String title; private String content; } response = ArticleResponse(articleId=184717674569289728, title=hi, content=my content, boardId=1, writerId=1, createdAt=2025-05-25T02:22:06, modifiedAt=2025-05-25T02:22:06) 이렇게 값이 안변하는 이유가 있을까요? @PutMapping("/v1/articles/{articleId}") public ArticleResponse update(@PathVariable Long articleId, @RequestBody ArticleUpdateRequest request) { return articleService.update(articleId, request); }

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
kimoon Hong 댓글 2 좋아요 0 조회수 80

예시코드 오타 제보

미해결

죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.

킬구형 일부러 그런건진 모르겠는데, 우선은 Batch Listener 섹션에서 실행명령에 전부 --job.name=~~ 형식으로 되어있어. 잡이름을 인식 못해서 Job Bean이 여러개 명시되어있으면 실행할때 오류나는 것 같아. --spring.batch.job.name= 처럼 안하면 안될 것 같은데, 이건 의도적으로 줄인걸까?

  • java
  • spring
  • spring-boot
  • spring-batch
  • backend
FWoody 댓글 2 좋아요 1 조회수 164

Event 클래스에 제네릭을 쓰신 이유가 궁금합니다.

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

EventPayload 를 제네릭으로 하셨는데 단순히 다형성 이용해서 하는 거랑 차이가 뭘까요? package kuke.board.common.event; import kuke.board.common.dataserializer.DataSerializer; import lombok.Getter; @Getter public class Event<T extends EventPayload> { private Long eventId; private EventType type; private T payload; public static Event<EventPayload> of(Long eventId, EventType type, EventPayload payload) { Event<EventPayload> event = new Event<>(); event.eventId = eventId; event.type = type; event.payload = payload; return event; } public String toJson() { return DataSerializer.serialize(this); } public static Event<EventPayload> fromJson(String json) { EventRaw eventRaw = DataSerializer.deserialize(json, EventRaw.class); if (eventRaw == null) { return null; } Event<EventPayload> event = new Event<>(); event.eventId = eventRaw.getEventId(); event.type = EventType.from(eventRaw.getType()); event.payload = DataSerializer.deserialize(eventRaw.getPayload(), event.type.getPayloadClass()); return event; } @Getter private static class EventRaw { private Long eventId; private String type; private Object payload; } }

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
minjun 댓글 2 좋아요 0 조회수 122

인기 태그

인프런 TOP Writers

주간 인기글