[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요, 강의 수강 중 질문이 생겨 여쭤봅니다. 강의에서는 사용자에게 입력받은 BookForm form의 데이터를 새로운 객체인 Book book = new Book();에 할당하고 있습니다. (5분 54초) 강의 중 '임의로 만든 엔티티이지만 식별자 pk를 가지고 있기에 준영속 엔티티이다' 라고 말씀하셨는데, 준영속 엔티티의 기준이 궁금합니다. 이미 DB에 persist된 객체의 참조가 아닌 식별자 값만 공유하더라도 준영속 엔티티가 되는 것일까요 ? Book book = (Book) itemService.findOne(form.getId()); 이렇게 DB에서 참조를 직접 조회하지 않고 단순히 id값만 DB에서 가져와서 할당해도 준영속 엔티티의 기준이 되는지 궁금해서 여쭤봅니다 !
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요 영한님 저는 영한님 수업을 정말 잘 듣고있는 대학생입니다. 이번 spring강의를 들으면서 개인 velog에 학습겸 포스팅을 하고싶은데 주된내용이 영한님이 알려주시는 코드인지라 이런것들을 포스팅 해도되는지 여쭙고싶습니다. 인프런 강의보니까 모든 코드와 영한님이 만드신 pdf파일은 퀄리티가 상당하여 함부로 velog에 작성해도되는지 조심스럽습니다. 혹시 약간의코드와 배운 지식을 학습차원에서 게시해도 되는지 여쭈어봐도 될까요?
SystemDeathJobConfig 예제 실행 명령어가 > ./gradlew bootRun --args='--spring.batch.job.name=recordSystemKillJob inputFile=/path-to-kill-batch-system/system_death.jsonl' ... SystemDeath[command=destroy, cpu=99, status=memory overflow] SystemDeath[command=explode, cpu=100, status=cpu meltdown] SystemDeath[command=collapse, cpu=95, status=disk burnout] ... 로 되어 있는데 job.name이 recordSystemKillJob -> systemDeathJob으로 바껴야 할 것 같습니다🫡 JsonRecordSeparatorPolicy 예제도 함께 바꿔야 할 것 같아요🫡
[ 작전명: 분산 서버 로그 처형 작전] [상황설명] : 코드 작성 후 최종 실행시, 비밀번호 입력 프롬프트 없이 아래 에러 발생 org.springframework.batch.core.step.tasklet.SystemCommandException: Execution of system command failed with exit code 255 at org.springframework.batch.core.step.tasklet.SystemCommandTasklet.execute(SystemCommandTasklet.java:129) ~[spring-batch-core-5.2.2.jar:5.2.2] [환경] : mac, intellij [분석] : 터미널에서는 scp localhost 하면 비밀번호 프롬프트가 잘 떴으나, 배치실행시에만 에러가 발생 [추가시도] ssh-keygen -t rsa -b 4096 으로 키쌍 생성 후 ssh-copy-id -i ~/.ssh/id_rsa.pub localhost 공개키를 등록 후 ssh localhost 하여 비밀번호 없이 접근 확인 이후 정상 처형 확인 완료
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. 스프링 핵심 원리 - 기본편 에서 김영한님이 작성하신 코드 파일을 다운로드 받을 수 있나요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요 복습을 진행중 입니다 멀티모듈 프로젝트로 만들어서 그런지 index.html 위치를 제대로 설정하였는데도 http://localhost:8080/ 로 들어가면 404에러가 뜨는데 이유를 모르겠습니다 ㅠ 사진은 디렉토리 구조입니다 /resources/static 아래에 두면 웰컴 페이지로 잘 동작하지만, 그 후 jsp사용한 회원 가입 등을 할 때 404에러가 발생하여 질문드리게 되었습니다
안녕하세요, 강사님. 올려주신 강의를 열심히 듣고 있습니다. 제가 코드를 따라하고 있는데 MemberService에서 주입한 emailSender와 passwordEncoder에 Could not autowire. No beans of 'PasswordEncoder' type found. 라는 오류가 뜹니다. 찾아보니 해당 인터페이스가 빈으로 등록되지 않아서 생긴 오류라고 하는데 어디서 빈으로 등록한건지 못찾겠습니다. 급한대로 두 인터페이스에 @Component를 해봤는데 MemberService의 오류는 사라졌지만 MemberResisterTest에 NoSuchBeanDefinitionException 문제가 뜹니다. 원래는 인터페이스들을 어떻게 빈으로 등록했던건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 예외 발생 흐름이 WAS - 필터 - 서블릿 - 인터셉터 - 컨트롤러 순이라고 배웠습니다 이때, 서블릿은 Spring의 DispatcherServlet 을 의미하는 것으로 알고 있습니다 그렇다면 여기서 말하는 "필터"와 "인터셉터"는 개발자가 직접 구현한 것을 뜻하는 건가요? 아니면 Spring 자체 구조 안에 필터와 인터셉터가 내장되어 있는 건가요?
안녕하세요, 강의를 보던 중 문득 궁금한 점이 생겨 문의드립니다. 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(); } } 강의를 보다 보면 예시마다 사용되는 경우가 다르던데, 어떤 기준에 따라 생성자 주입 방식과 메서드 파라미터 주입 방식을 구분해서 사용하시는지 궁금합니다. 실무에서도 보통 이 둘을 혼용하는 편인지, 아니면 상황에 따라 선호되는 방식이 명확히 나뉘는지 조언 부탁드립니다. 감사합니다.
두가지 질문 있습니다. 1) 16분 30초부터 설명하는 내부 트랜잭션 응답 흐름에서 궁금한점이 있습니다. 이번 강의에서 내부 트랜잭션이 참여하게 되면 이것은 아무것도 하지 않는 것이다라고 하셨고 내부 트랜잭션이 커밋해도 신규 트랜잭션이 아니기 때문에 실제 커밋을 호출하지 않는다. 그리고 실제 커넥션에 커밋이나 롤백을 호출하면 트랜잭션을 끝나기 때문에 안되기 때문에 실제 커밋을 호출하면 안되고 여기서는 아무것도 안한다 라고 설명하시는데요. 그렇다면 다음 코드에서 @Test void inner_commit() { log.info("외부 트랜잭션 시작"); TransactionStatus outer = txManager.getTransaction(new DefaultTransactionAttribute()); log.info("outer.isNewTransaction()={}", outer.isNewTransaction()); log.info("내부 트랜잭션 시작"); TransactionStatus inner = txManager.getTransaction(new DefaultTransactionAttribute()); log.info("inner.isNewTransaction()={}", inner.isNewTransaction()); log.info("내부 트랜잭션 커밋"); // txManager.commit(inner); log.info("외부 트랜잭션 커밋"); txManager.commit(outer); } 내부 트랜잭션에서 실제 커밋을 호출하면 안되고 어차피 아무것도 하지 않는 것이라면 없어도 되는 코드 아닌가? 라고 생각했는데 아래 다른 분이 하신 비슷한 질문의 답변에서 내부 트랜잭션을 사용한다고 결정했다면 항상 내부 트랜잭션을 커밋이나 롤백을 결정하셔야 합니다. 라고 답변 하신 것을 보았는데요. 아무것도 하지 않는데 내부 트랜잭션은 왜 커밋을 해주어야하는건가요? 2) 1번 질문이랑 관련 있는 것 같기는한데요. 이전 강의에서 모든 논리 트랜잭션이 커밋되어야 물리 트랜잭션이 커밋된다고 하셨는데요, 이번 강의에서나 다음 강의에서나 외부(물리) 트랜잭션만 커밋해도 실제 커넥션에 모두 커밋되는 것 같은데.. 아닌가요? 이것이 맞다면 1번 질문과 마찬가지로 외부 (물리) 트랜잭션만 하면 되니 txManager.commit(inner) 코드는 필요 없는 것 아닌가요?
치치직...1장 작전 3에서, 키보드는 꽉 잘 잡았는데 궁금한게 발생했다. jobExecutionContext 에 접근/수정할 때 chunkContext 를 통해서 접근하는 방법과 contribution 을 통해서 접근하는 방법 두가지를 알게 되었다. 일부러 두가지 침투 방식 을 알려준 것 같으나 두 방식의 차이가 있는지, 무엇이 더 선호되는지 아니면 취향의 문제인지 궁금하다.
안녕하세요. 강의 잘 보고 있습니다. 헥사고날 아키텍처 구조에서 궁금한 점이 있습니다. 동일 프로젝트에 회원, 부서 도메인이 있고, 회원 서비스가 부서 서비스를 의존하고 있을 경우 이 경우에는 포트+어댑터 패턴을 유지하는게 좋을까요? 아니면 부서 패키지 내에 존재하는 서비스 인터페이스로 주입받아도 괜찮을까요? 포트 + 어댑터 구조로 할 경우 어댑터가 단순히 부서 서비스를 의존받아 호출만 하는 용도로만 사용하는거 같아 장점을 잘 모르겠습니다. (회원, 부서 도메인이 별도 프로젝트로 분리될 가능성은 희박하다는 전제입니다.)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. controllerV3를 만들때 파라미터로 Map<String,String>으로 전해주시는데 이것은 V2에서는 사용안하는 response를 없애기 위한것인가요? 그렇다면 파라미터로 그냥HttpServletRequest requestt만 받게 하면 안되나요?
[질문 템플릿] 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.main 7월 13, 2025 12:21:39 오후 org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["http-nio-8080"] 7월 13, 2025 12:21:39 오후 org.apache.catalina.core.StandardService startInternal INFO: Starting service [Tomcat] 7월 13, 2025 12:21:39 오후 org.apache.catalina.core.StandardEngine startInternal INFO: Starting Servlet engine: [Apache Tomcat/10.1.5] 7월 13, 2025 12:21:39 오후 org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["http-nio-8080"] 여기서 시간만 무제한으로 잡아먹고 더 진행이 안되는데 어떻게 해야할까요.. 내장 톰캣2-서블릿 강의를 보고 하는 중입니다. 8080 포트는 톰캣 외에 사용하는 것이 없고, 톰캣 폴더에 webapps도 만들어 두었고, 혹시 몰라 java 17도 다시 깔고 환경변수 설정도 다 했는데, 다른 컴퓨터에서도 같은 문제가 발생합니다. 검색해서 java.security의 securerandom.source=file:/dev/random to securerandom.source=file:/dev/./urandom 바꿔봤는데도 그대로입니다. 어떻게 해야할까요?
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 저가 이해 한게 맞는지 알고 싶어서 올립니다. 사진을 보시면 response.sendRedirect("/basic/hello-form.html"); 라는 코드가 있는데 저가 이해한 바로는 여기 이 코드(로직) 안에 "302"이 고정 되어 있어서 302번 상태 코드를 호출 하고 폼으로 간다 라고 이해 해도 되냐요? 답변 부탁드립니다.