묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
jobConfiguration 구성 질문
안녕하세요, 강의를 보던 중 문득 궁금한 점이 생겨 문의드립니다. Spring Batch에서 Job 설정 클래스를 구성할 때, 아래와 같이 두 가지 스타일이 혼용되는 것을 자주 보게 되는데요.🥔 PotatoJobConfiguration (생성자 주입 방식)@RequiredArgsConstructor public class PotatoJobConfiguration { private final JobRepository jobRepository; private final PlatformTransactionManager transactionManager; @Bean public Job potatoJob() { return new JobBuilder("potatoJob", jobRepository) .start(potatoStep()) .build(); } @Bean public Step potatoStep() { return new StepBuilder("potatoStep", jobRepository) .tasklet((contribution, chunkContext) -> RepeatStatus.FINISHED, transactionManager) .build(); } }🥬 KimchiJobConfiguration (메서드 파라미터 주입 방식)@RequiredArgsConstructor public class KimchiJobConfiguration { @Bean public Job kimchiJob( final JobRepository jobRepository, final Step kimchiStep ) { return new JobBuilder("kimchiJob", jobRepository) .start(kimchiStep) .build(); } @Bean public Step kimchiStep( final JobRepository jobRepository, final PlatformTransactionManager transactionManager ) { return new StepBuilder("kimchiStep", jobRepository) .tasklet((contribution, chunkContext) -> RepeatStatus.FINISHED, transactionManager) .build(); } }강의를 보다 보면 예시마다 사용되는 경우가 다르던데,어떤 기준에 따라 생성자 주입 방식과 메서드 파라미터 주입 방식을 구분해서 사용하시는지 궁금합니다. 실무에서도 보통 이 둘을 혼용하는 편인지,아니면 상황에 따라 선호되는 방식이 명확히 나뉘는지 조언 부탁드립니다. 감사합니다.
-
미해결스프링 배치
트랜잭션 예외
안녕하세요, 선언적 트랜잭션을 사용하였지만 제 예상과 다르게 서비스 로직이 롤백되지 않고 끝까지 실행되는 현상이 있어서 자문을 구합니다. 실행 시킨 코드는Job, Step, Tasklet으로 구성된 간단한 로직입니다.Tasklet에서 DB CUD 작업을 수행하는 Service 클래스를 호출하여 사용하고 있습니다. 코드 흐름 예시)@RequiredArgsConstructorpublic class TestService { private final TestMapper mapper;@Transaction(rollbackFor = Exception.class) public void update() {mapper.update1(); mapper.update2(); }} update1을 수행 중, SQL 레벨에서 예외 발생(ex. PSQL Exception) 기대결과update1 예외 및 롤백update2를 실행하지 않고 서비스 로직 중단 실제결과update1 예외update2 실행 후 커밋 무엇이 문제인지 고견을 여쭙고 싶습니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
빌드 시작부터..
빌드 시작부터 오류가 나요;;
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
jobExecutionContext 에 접근하는 방법
치치직...1장 작전 3에서,키보드는 꽉 잘 잡았는데 궁금한게 발생했다. jobExecutionContext 에 접근/수정할 때chunkContext 를 통해서 접근하는 방법과 contribution 을 통해서 접근하는 방법 두가지를 알게 되었다. 일부러 두가지 침투 방식 을 알려준 것 같으나 두 방식의 차이가 있는지, 무엇이 더 선호되는지 아니면 취향의 문제인지 궁금하다.
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
동일 프로젝트에 서비스 간 의존성 주입 질문
안녕하세요. 강의 잘 보고 있습니다. 헥사고날 아키텍처 구조에서 궁금한 점이 있습니다.동일 프로젝트에 회원, 부서 도메인이 있고, 회원 서비스가 부서 서비스를 의존하고 있을 경우이 경우에는 포트+어댑터 패턴을 유지하는게 좋을까요? 아니면 부서 패키지 내에 존재하는 서비스 인터페이스로 주입받아도 괜찮을까요?포트 + 어댑터 구조로 할 경우 어댑터가 단순히 부서 서비스를 의존받아 호출만 하는 용도로만 사용하는거 같아 장점을 잘 모르겠습니다. (회원, 부서 도메인이 별도 프로젝트로 분리될 가능성은 희박하다는 전제입니다.)
-
해결됨Spring Boot와 React로 배우는 초간단 REST API 게시판 만들기
두번째 게시글 등록이 안되네요.
안녕하세요. 수업 내용의 모든 내용에 대응했는데도,두번째 게시글 등록이 안되네요.브라우저에 보이는 에러 로그 남겨놓겠습니다.조언 부탁드립니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
인기글 설계에 대하여 질문드립니다.
안녕하세요? 강의 정말로 잘듣고 있습니다. 인프런에서 여러 강의를 수강했지만, 정말 질 좋은 강의라고 생각합니다 ㅎㅎ..인기글 설계에 대해 궁금한 부분이 있습니다. 1)저는 레디스의 sorted_set을 사용한다고 하셨을 때, 처음 떠올린 구조는 모든 게시글에 대한 점수를 기록하면서 자연스럽게 sorted_set에 의해 정렬되는 형태를 생각했었습니다.예를 들어 20250713에 게시글이 십만개가 생성되었다고 하면, 20250713 sorted_set에 십만개의 게시글에 대한 점수가 들어있고, 필요할 떄 상위 10개의 데이터를 추출하여 인기글로 선정하는 형태입니다.이렇게 하면 게시글과 연관된 데이터의 개수를 적재할 필요도 없다고 생각했고, sorted_set을 자연스럽게 활용하는 형태라고 생각했습니다. 이벤트를 수신하고나면, 적절하게 점수만 올려주면 된다고 생각하구요. 이렇게 하면 게시글과 관련된 데이터를 적재할 필요도 없을 것 같아서 나쁘지 않은 방법 같은데, 이 방법에 대해서 어떻게 생각하시는지 궁금합니다 2) 비슷한 맥락으로, 강의에서 보여주신 방향을 선택하신 이유도 좀 궁금합니다. 1)에서 제가 말씀드린 방안보다 선생님이 강의에서 말씀해주신 방향이 어떤 장점이 있는걸까요? 3) 마지막으로.. 강의가 너무 좋아서 다음강의가 기대가 되는데요, 혹시 비슷한 사이즈에 비슷한 볼륨일까요?또 이미 강의를 제작중이실 것 같은데, 캐싱과 관련된 부분이라고는 알고 있지만 조금 더 상세한 커리큘럼이나 개강일자가 궁금합니다 ㅎㅎ좋은 강의 감사합니다
-
미해결스프링 부트 - 핵심 원리와 활용
내장 톰캣 실행 오류 관련 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]오후 12:21:38: Executing ':hello.embed.EmbedTomcatServletMain.main()'…> Task :compileJava UP-TO-DATE> Task :processResources NO-SOURCE> Task :classes UP-TO-DATE> Task :hello.embed.EmbedTomcatServletMain.main()EmbedTomcatServletMain.main7월 13, 2025 12:21:39 오후 org.apache.coyote.AbstractProtocol initINFO: Initializing ProtocolHandler ["http-nio-8080"]7월 13, 2025 12:21:39 오후 org.apache.catalina.core.StandardService startInternalINFO: Starting service [Tomcat]7월 13, 2025 12:21:39 오후 org.apache.catalina.core.StandardEngine startInternalINFO: Starting Servlet engine: [Apache Tomcat/10.1.5]7월 13, 2025 12:21:39 오후 org.apache.coyote.AbstractProtocol startINFO: Starting ProtocolHandler ["http-nio-8080"]여기서 시간만 무제한으로 잡아먹고 더 진행이 안되는데 어떻게 해야할까요.. 내장 톰캣2-서블릿 강의를 보고 하는 중입니다. 8080 포트는 톰캣 외에 사용하는 것이 없고, 톰캣 폴더에 webapps도 만들어 두었고,혹시 몰라 java 17도 다시 깔고 환경변수 설정도 다 했는데, 다른 컴퓨터에서도 같은 문제가 발생합니다. 검색해서 java.security의 securerandom.source=file:/dev/randomtosecurerandom.source=file:/dev/./urandom바꿔봤는데도 그대로입니다.어떻게 해야할까요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
인기글 e2e 테스트 관련해서 궁금합니다.
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요, 강의 3회차를 복습하면서 궁금한 점이 생겨 질문드립니다. 인기글 섹션 마지막에, 모든 서버와 컨테이너를 실행해둔 상태에서 테스트 코드로 직접 호출해 기능을 검증하셨는데요. 실무에서도 E2E 테스트나 시나리오 테스트를 이러한 방식으로 진행하는지 궁금합니다. 개인적으로는 서버와 컨테이너를 매번 띄우고 테스트하는 과정에서 실수할 여지도 있고, 관리도 어려워 보인다는 생각이 들었습니다. 모듈 내부의 단위 테스트나 통합 테스트는 직접 작성해봤지만, 인기글처럼 여러 모듈 간의 상호작용을 테스트해 본 적은 없어 실제 현업에서는 어떤 식으로 검증하는지 궁금해 질문드립니다. 미리 답변 감사드립니다!
-
해결됨토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
안녕하세요 토비님 개인적인 질문이 있습니다.
강의와는 관련이 없는데, 개인적인 질문이 있습니다.저는 자바 스프링 신입 개발자를 준비하고 있는 학생입니다.지금까지는 MVC 패턴만 사용하고, 모놀리틱 아키텍처를 사용해서 배포를 진행하고 프로젝트를 해왔습니다. 제가 알기로는 학습적으로나 포트폴리오적으로나 필요성을 느껴서 하는 공부가 제일 좋다고 들었습니다. 근데, 최근에는 어떤 필요성을 느끼지 못하면서 대규모 시스템 강의,헥사고날 아키텍처가 중요하다고 하니 강의 등을 듣고 있습니다. 왜냐하면, 본격적인 취업은 내년이고 시간이 좀 남았습니다. 그래서 해당 강의들을 들어두면 언젠가 개인 프로젝트나 현업에서 사용할 수 있지 않을까하고 듣고있습니다만, 제가 사용했던 MVC 패턴의 장단점 등 기본적인 것들도 알지 못하는 상태에서 계속 진도 나가듯이 이런 저런 강의를 듣고 하는게 괜찮을까요? 즉, 아직 기본도 잘 모르면서 계속 새로운 걸 배우는 과정들이 괜찮을까하는 걱정이 드네요. 하지만, 한편으로는 CS지식이 너무 방대해서 기초를 다 잡아두고 다음 단계로 넘어간다는 것도 솔직히 엄두가 안납니다. 그래서 우선은 쭉 이것저것 배워두고 나중에 필요하면 다시 찾아보면서 공부하면 되지 않을까 싶은데, 토비님은 어떤 방향이 더 괜찮다고 생각하시나요??
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
대규모 시스템에 관련하여 질문 있습니다.
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강의 잘 보고 있습니다. 복습하던 중에 궁금한 부분이 있어 질문을 남깁니다.현업에서 대규모 시스템을 만드는 경우에 헥사고날 아키텍처 + MSA를 사용한다는 것으로 알고 있는데, MVC 패턴이 아니라,헥사고날 아키텍처를 대규모 시스템에서 더 선호하고 사용하는 이유가 무엇인가요?? 추가적으로 이건 강의와는 관련이 없는데, 개인적인 질문이 있습니다.저는 자바 스프링 신입 개발자를 준비하고 있는 학생입니다.지금까지는 MVC 패턴만 사용하고, 모놀리틱 아키텍처를 사용해서 배포를 진행하고 프로젝트를 해왔습니다. 제가 알기로는 학습적으로나 포트폴리오적으로나 필요성을 느껴서 하는 공부가 제일 좋다고 들었습니다. 근데, 최근에는 어떤 필요성을 느끼지 못하면서 대규모 시스템 강의,헥사고날 아키텍처가 중요하다고 하니 강의 등을 듣고 있습니다. 왜냐하면, 본격적인 취업은 내년이고 시간이 좀 남았습니다. 그래서 해당 강의들을 들어두면 언젠가 개인 프로젝트나 현업에서 사용할 수 있지 않을까하고 듣고있습니다만, 제가 사용했던 MVC 패턴의 장단점 등 기본적인 것들도 알지 못하는 상태에서 계속 진도 나가듯이 이런 저런 강의를 듣고 하는게 괜찮을까요? 즉, 아직 기본도 잘 모르면서 계속 새로운 걸 배우는 과정들이 괜찮을까하는 걱정이 드네요. 하지만, 한편으로는 CS지식이 너무 방대해서 기초를 다 잡아두고 다음 단계로 넘어간다는 것도 솔직히 엄두가 안납니다. 그래서 우선은 쭉 이것저것 배워두고 나중에 필요하면 다시 찾아보면서 공부하면 되지 않을까 싶은데, 쿠케님은 어떤 방향이 더 괜찮다고 생각하시나요??
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
영상 편집에 오류가 있는것 같습니다.
3:10 MemberRegisterResponse 생성3:23 MemberRegisterResponse 생성같은 과정이 반복되는데 편집이 잘 못 된것 같습니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링부트 프로젝트를 windows로 빌드하고 실행한 이후..
[질문 내용]그 이후부터는 intellij에서 localhost:8080으로 접속이 안됩니다. 설정에서 이렇게 변경을 해도 프록시서버 설정을 바꿔야하는건지 알수가 없네요. 프로젝트 다시 만드는 방법보다 설정바꿔서 실행해보고 싶은데 어느 쪽을 변경해야하나요?
-
해결됨Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
혹시나 gradle 로 실행 어떻게 해야하나 싶으신 분들
저는 기존에 jdk 11 을 환경변수로 넣고 있어서 jdk21 은 인텔리제이에서 잡아다 쓰고 있었는데, 터미널은 시스템의 환경변수를 따라가다보니 좀 귀찮아서 찾아보니까 프로젝트 루트 디렉토리에 gradle.properties 라는 파일 생성한 뒤 org.gradle.java.home= 의 값을 넣어줘야합니다. 인텔리제이 상단 메뉴에서 File -> project Structure -> SDKs -> jdk21 버전 클릭 -> 'JDK home path' 의 경로를 통째로 org.gradle.java.home 의 값으로 복붙 -> 역슬래시(\)는 슬래시(/) 로 변경 -> 우측 사이드 패널에서 코끼리(gradle) 펼쳐다가 수동으로 새로고침 -> 인텔리제이 터미널에서 ./gradlew bootRun --args='--server.port={포트번호}' 입력하면 잘 됩니다.
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
MemberInfoUpdateRequest, MemberRegisterRequest의 패키지 위치
학습중에 MemberInfoUpdateRequest, MemberRegisterRequest와 같은 객체들은 어댑터에서도 사용하고, 애플리케이션에서도 사용하고, 도메인 내부로직에도 사용하는데 도메인 패키지 내에 위치하는게 맞는지 의문이 들어서 질문드립니다!
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
MemberRegister가 Member 엔티티의 C/U/D 작업을 모두 담당하나요?
안녕하세요, 토비님. 현재 MemberRegister 인터페이스는 register 뿐만 아니라 활성화/비활성화, 정보 업데이트 등의 오퍼레이션을 제공하고 있는데요,해당 인터페이스에 작성된 주석은 회원의 등록과 관련된 기능을 제공한다여서 'register를 제외한 오퍼레이션은 다른 인터페이스에 위치해야 하지 않나?' 하는 생각이 듭니다.혹은 회원 등록 외 오퍼레이션이 해당 인터페이스에 존재하는게 의도하신 바지만, 주석 내용이 수정되지 않은 걸까요? 궁금한 점을 요약해서 정리하자면, xxxFinder는 조회와 관련된 오퍼레이션을, xxxRegister는 생성/수정/삭제와 관련된 오퍼레이션을 가지는 걸까요? 완강 후 회사에서 강의로 알려주신 것들을 이것저것 적용해보며 재밌게 일하고 있습니다, 정말 감사드립니다.
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
68. 인증 이벤트 - AuthenticationEventPublisher 활용 강좌 음성 문제
68. 인증 이벤트 - AuthenticationEventPublisher 활용 강좌 중간중간에 음성이 나오지 않아 글 작성 합니다.
-
해결됨토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
같은 계층에서의 의존성 관리 질문
안녕하세요 Toby!먼저 좋은 강의 올려주셔서 감사 말씀 드립니다.열심히 강의를 듣던 와중에 궁금한 점이 있어서 질문드립니다. 회원 애플리케이션 기능 추가 강의에서 보면,MemberModifyService 클래스에서 MemberFinder 빈을 주입받아 사용하도록 구현해주셨습니다. 관련해서 같은 application 계층에서 서로 DI 받는 구조로 구성하게 될 경우, 발생하는 순환 참조와 같은 문제점들에 대해서는 어떻게 관리하는게 좋을까요? 그리고 그런 문제점이 발생하지 않도록 예방하기 위해서는 어떤 방법이 있을까요?
-
미해결개발자에게 필요한 로그 관리
trace 로그 보관 질문
강의 내용에서 사용자 요청, 응답에 관한 부분은 trace로그로 보관한다고 들었습니다. 또한 로그 레벨을 나누는 이유가 보기 편하라는 이유를 들었는데요 보통 개발환경에서 로그레벨을 파일별로 나누나요?app-trace.logapp-info.logapp-error.log이런식으로 나누고 trace로그를 7일만 보관할 경우 app-trace.log가 7일이 지나면 삭제한다는 방식으로 파일을 나눠서 보관하는지 궁금합니다. 추가로,다른 질문에 app.log, security.log 이런식으로 파일을 분할하지만 강사님 기준 법적 기준 로그 제외 파일을 하나로 묶는게 좋다고 추천하셨는데요그럼 trace로그도 하나로 묶어서 보관하는지, 묶는경우 삭제가 안되니까 나눠서 보관하는지요?
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
DB 설정 문제
안녕하세요 프로젝트 초기 설정을 토비님 강의 진행대로 따라하고 있는 중입니다.제가 docker 는 잘 몰라서 강의 자료에 있는 Rancher Desktop 을 그냥 설치했구요서버 구동하기 전에 먼저 켜고 토비님 강의 순서 대로 진행했습니다 compose.yaml 의 내용을 수정하기 전에는 오류없이 잘 되는데 토비님이 작성하신 대로 수정을 해서 서버를 구동하면 계속 오류가 발생하고 있습니다 제 디비에 문제가 있나 싶어서 mysql를 완전 삭제하고 재설치 까지 해서 다시 해봐도 이전과 계속 같은 오류가 발생하는데 ai 를 통해서 해결해보려고 해도 해결을 못하고 있습니다 혹시 확인해보시고 알려주셨으면 합니다