학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 예외 발생 흐름이 WAS - 필터 - 서블릿 - 인터셉터 - 컨트롤러 순이라고 배웠습니다 이때, 서블릿은 Spring의 DispatcherServlet 을 의미하는 것으로 알고 있습니다 그렇다면 여기서 말하는 "필터"와 "인터셉터"는 개발자가 직접 구현한 것을 뜻하는 건가요? 아니면 Spring 자체 구조 안에 필터와 인터셉터가 내장되어 있는 건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/ 아니오 ) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ( 예 /아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 /아니오) [질문 내용] 강의에 어떤 회차에는 자막이 나오고, 다른 회차에는 안나오고 합니다.. 인프런 AI 챗봇에 문의해 봤는데요 <<강의에 따라 지식공유자(강사)가 인프런의 AI 기능 적용에 비동의한 경우, 자막이 제공되지 않을 수 있습니다. 김영한의 자바 입문 강의에서 자막이 나왔다가 안 나왔다가 하는 경우, 해당 강의의 자막 제공 여부가 강사의 설정에 따라 달라질 수 있습니다. >> 이렇게 답변하네요.. 청각능력이 좋지 않아서 이어폰을 장시간 착용하기 어려운데, 자막이 없는 회차가 있어 어려움을 겪고있습니다ㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. new class 가 뜨지 않아요.
9분 45초에서 (Data*)는 malloc앞에 왜 붙이는 건가요? malloc이 메모리 공간을 확보해 준다는건 알겠는데 앞에 (Data*)이게 왜 붙어있는지 이해가 안갑니다. 그리고 if(!new_node) 를 해석할때 제가 이당시에 문제를 풀때 이걸 new_node가 빈공간이 아닐때 ~ 이렇게 해석을 못했습니다. 배운적이 없던것 같은데 혹시 이거와 관련된 강의가 있다면 몇번째 어느강의인지 알려주시면 감사합니다.
안녕하세요. 컬렉션 페치조인 페이징을 하게되면, 조인을 하고나서 페이징 처리가 되서 2개의 ROW에서 각 TEAM에 하나의 회원씩만 있게 된 채로 리턴된다고 강의에서 하셨는데, 이 부분이 잘 이해가 되질 않습니다. 어차피 리턴되는 데이터는 TEAM이라서 각각의 TEAM이 페이징 처리되서 리턴되는게 아닌가요..? 왜 페이징 처리를 하게되면, 2개의 ROW에서 각 TEAM에 하나의 회원씩만 있게 된 채로 리턴되는지 이해가 잘 되지않습니다...
제가 멍청한건지 수차례 읽어도 왜 이렇게 나오는지 연결고리를 못찾겠더라구요. gpt한테 물어보니까 메서드는 자식객체에 오버라이딩된 메서드가 있다면 거기를 우선으로 하지만 변수는 객체 말고 변수의 타입 즉 앞에 붙은 클래스를 따라가서 이런 결과가 나온다고하는데 혹시 맞을까요? 변수와 매서드의 차이.
안녕하세요, 강의를 보던 중 문득 궁금한 점이 생겨 문의드립니다. 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번 문제 4분 45초 쯤에 this.display로 자신의 display를 호출하여 10을 출력하는데 전에 강사님 말씀 중에 부모에는 없는데 자식에만 있는 메서드를 호출하면 무조건 오류가 난다고 하신 적이 있습니다.(34강 17분 5초 경) 이 문제에서도 display가 자식에만 있는데 왜 10이 호출되는 건가요? 이 차이가 업캐스팅이 되고 안되고의 차이인가요? 아니면 this. 으로 출력했기 때문인가요?
정적 중첩 클래스의 경우, 외부 클래스의 정적 변수에는 접근이 가능하지만 인스턴스 변수에는 접근할 수 없다는 것은 알고 있습니다. 정적 중첩 클래스와 인스턴스 변수가 생성됐을 때, 생성영역이 다르기 때문이라고 한다면 정적 중첩 클래스가 외부 클래스의 public 인스턴스 메서드에도 접근할 수 없는 것이 맞는 건가요? 아래와 같이 코드를 작성해보니 static context에서 non-static method를 참조할 수 없다는 오류가 뜹니다. public class NestedOuter { private static int outClassValue = 3; private int outInstanceValue = 2; // 인스턴스 영역에 생성되는 변수 (heap 영역) public void outerPrint() { System.out.println("Can Nested class access this method?"); } // 정적 중첩 클래스 // static은 클래스 수준(static)으로 존재 static class Nested { private int nestedInstanceValue = 1; public void print() { // 자신의 멤버 접근 System.out.println(nestedInstanceValue); // 바깥 클래스 인스턴스 멤버에는 접근할 수 없다. // nested static class는 outer class의 인스턴스와 독립적으로 존재하기 때문에, 인스턴스 변수에는 접근할 수 없다 // System.out.println(outInstanceValue); // 바깥 클래스의 클래스 멤버에는 접근 가능. private이어도 Nested 클래스가 NestedOuter 클래스 내부에 존재하기 때문에 접근 가능. // System.out.println(NestedOuter.outClassValue); // 가능 System.out.println(outClassValue); System.out.println(outerPrint()); } } } 정답은 C, D 두 가지인 것으로 생각하면 될까요?
두가지 질문 있습니다. 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) 코드는 필요 없는 것 아닌가요?