30%
61,600원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결스프링 핵심 원리 - 기본편
OCP와 DIP의 차이점
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]DIP와 OCP가 상당히 비슷해보여서 구분이 잘 가질 않네요. 제가 정리한 바로는 이런데 혹시 맞나 해서 질문드립니다.1. '클라이언트가 다형성을 사용하여 인터페이스에만 의존하게 DIP를 지켰다. AppConfig가 OCP를 이용해 확장에는 열려있고 변경에는 닫혀있게 수정했다.'2.추가적으로 DIP, IoC, OCP 모두가 맞물려있는 것 같다는 생각이 듭니다... ㅜ
- 미해결스프링 핵심 원리 - 기본편
인텔리제이 내장jdk사용
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]java11jdk를 따로 설치하지않고 인텔리제이에 내장된jdk를 사용해도되나요??
- 미해결스프링 핵심 원리 - 기본편
강의 자료에 오타가 있어요~
첫화면 위에서 두 번째 줄 '받아드릴 수 있게' → '받아들일 수 있게' 입니다잇
- 미해결스프링 핵심 원리 - 기본편
prototype 스코프 사용 시 proxymode
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]request 스코프 사용 시 @Scope 에서 proxymode 추가하는 것으로, 코드가 간단해지는 것을 보고, prototype 스코프에도 적용해보려고 했는데, 오류가 발생하였습니다.질문게시판에서 답변이 되는 글을 찾아서 궁금증은 풀렸는데요, (https://www.inflearn.com/course/lecture?courseSlug=%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8&unitId=55396&tab=community&category=questionDetail&q=560062)그렇다면 결론적으로 prototype 스코프에서는 proxymode를 사용할 수는 없고, provider를 사용하는 것이 최선일까요? 감사합니다
- 미해결스프링 핵심 원리 - 기본편
무상태
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]싱글톤을 사용할 때는 상태를 유지하지 않는 무상태로 설계해야 하는데, 무상태라는 말을 어떻게 이해해야 할까요?하나의 객체를 공유하면서 각자 변경은 할 수 있어야 하는데..
- 미해결스프링 핵심 원리 - 기본편
@Component와 @AutoWired를 사용했을때 정책에 변경이 생기면 구체화 클래스를 손봐야 하나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]할인정책 같이 변경이 일어날 수 있는 상황에서 그냥 AppConfig에서는 @Bean에서 단지 return값을 바꿔주는 걸로 OrderServiceImpl라는 구체화 클래스에 변경 없이 의존관계주입을 바꾸어 주었는데 @Component로 빈 저장소에 저장한 뒤 @AutoWired로 자동의존관계 주입을 해줄때1. RateDiscountPolicy와 FixDiscountPolicy 둘다 @Component로 빈 저장소에 저장을 하는 것인지1-1. 만약 둘다 저장해서 @AutoWired하는 경우 어떤 정책을 사용할지는 OrderServiceImpl 생성자에 @Qualifier라는 에노테이션을 사용한다고 gpt가 알려 주더라구요 그럼 할인 정책을 바꾸게 되면 OrderServiceImpl 구체화 클래스에 변경이 일어나니 좋지 않는 코드이지 않은가 라는 의문과아니면 그냥 사용 할 정책만 @Component해서 자동의존주입하는게 맞는건지 궁금합니다 혹시 제가 이상한 질문을 한거라면 그냥 강의나 다시보라고 말씀해주시면 감사드리겠습니다.
- 미해결스프링 핵심 원리 - 기본편
간단한 질문 하나 드립니다. (빈 타입에 대하여)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요. 강의를 듣다가 약간 헷갈리는 부분이 있어 간단한 질문드립니다.getBean() 메소드의 매개변수로, '빈 이름'과 '타입'이 있다고 이해했습니다. 여기서 '타입'이 정확히 무엇을 의미하는지 헷갈립니다.@Bean 애노테이션이 붙은 메소드의 리턴 타입을 의미하는 것일까요?@Bean public MemberRepository memberRepository1() { return new MemoryMemberRepository(); } @Bean public MemberRepository memberRepository2() { return new MemoryMemberRepository(); }예를 들어 위 코드의 경우, 둘 다 MemberRepository 타입을 반환하기 때문에 빈 타입으로 MemberRepository이 저장되는 것인가요? 그리고 동일한 타입 둘 이상인 경우 발생하는 NoUniqueBeanDefinitionException도 @Bean에 등록된 반환타입이 동일하기 때문에 발생하는 것인지도 궁금합니다.추가적으로 앞 강의에서 getBean()을 사용할 때 구체 타입(예: MemoryMemberRepository.class)을 사용할 수도 있다고 했는데, 이건 MemoryMemberRepository의 부모가 MemberRepository이기 때문인가요?
- 미해결스프링 핵심 원리 - 기본편
안녕하세요 스프링 컨테이너를 들으면서 정적인 의존관계와 동적인 의존관계가 어떻게 연결되는지 궁금합니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]추상적인 내용을 코드로 먼저 보여드리고 질문하겠습니다. 먼저 정적인 클래스 의존관계는 다음과 같은데요import hello.core.discount.DiscountPolicy; import hello.core.member.Member; import hello.core.member.MemberRepository; public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; }제가 이해한 바로는, DIP 원칙을 지키기 위해 생성자를 통한 인터페이스 주입을 해야 한다고 들었습니다. 다음은 동적인 인스턴스 의존관계 관련 코드입니다.public class AppConfig { public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } public MemberRepository memberRepository() { return new MemoryMemberRepository(); } public OrderService orderService() { return new OrderServiceImpl(memberRepository(), discountPolicy()); } public DiscountPolicy discountPolicy() { return new RateDiscountPolicy(); } }먼저 앱을 실행하기 전인 정적인 클래스 의존관계 단계에서 생성자를 통한 인터페이스 의존성 주입으로 OrderService 객체가 MemberRepository와 DiscountPolicy 인터페이스를 사용할 것이라고 알린 후, 실제로 앱을 구동하면 런타임 환경에서 사용할 인스턴스를 생성하고 이전의 정적인 클래스 단계에서 주입한 것을 구현 객체로 반환하면서 의존성이 물리적으로 연결되었다고 볼 수 있나요? 그래서 정적인 단계와 동적인 단계로 구분한 것인가요?
- 미해결스프링 핵심 원리 - 기본편
프로세스 흐름도를 한번에 이해하지 못한다면
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 비전공자로서, Spring을 공부하고 있는 취준생입니다. 프로세스 흐름도를 보면, 클래스 이름이 비슷하고, 각 클래스가 어떤 역할을 하는지 한번에 감이 안옵니다. 이 경우에는 제가 도메인 지식이 부족한 건지, 아니면 정상인지 궁금합니다...!나중에 회사 들어가서, 이걸 왜 이해못하냐는 식의 핀잔을 들을까봐 걱정됩니다
- 미해결스프링 핵심 원리 - 기본편
도메인설계에서 '도메인'의 의미
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]안녕하세요 강사님, 강의에서 '도메인'이라는 용어가 자주 등장하는데, 정확한 의미에 대해 알고 싶어서 질문드립니다.
- 해결됨스프링 핵심 원리 - 기본편
No qualifying bean of type 'basic.core.member.MemberService' available 에러
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요, 컴포넌트 스캔과 의존관계 자동 주입 시작하기 강의를 잘 보고 있었는데 AutoAppConfigTest 부분에서 막혀서 질문드립니다. No qualifying bean of type 'basic.core.member.MemberService' available 에러가 발생하는데요, AutoAppConfig 위치가 패키지 최상단임에도 불구하고 해당 에러가 발생하고 있습니다. ㅠㅠ 어노테이션도 강의 페이지를 보고 제대로 달았는데 어떤 점이 문제인지 파악이 어려워 해당 코드 구글 드라이브 업로드합니다. 감사합니다. https://drive.google.com/file/d/1hwrIzJPo6PIdTQ5ACj4PBrIOzOXhDbdK/view?usp=sharing
- 미해결스프링 핵심 원리 - 기본편
자동 의존관계 주입 시 꼭 @Configuration 이 붙은 설정 클래스가 필요한가요 ?
안녕하세요 영한님! 면접을 위해 다시 복습하다 궁금해진게 있어 질문드립니다. 질문 내용은 제목과 같은데요, 평소에 웹 애플리케이션을 개발하면서 수동 주입보단 자동 주입을 자주 활용해왔고 강의의 AutoAppCofing 와 같은 Bean 설정 클래스를 전혀 사용하지 않고 개발했음에도 별 문제가 없었습니다.다른 질문들도 많이 확인해봤는데 main() 안에 @SpringBootApplication -> @SpringBootConfiguration -> @Configuration 이 이미 적용되어있기 때문에 굳이 설정 클래스를 만들지 않고도 Bean 객체의 싱글톤을 보장받을 수 있다고 짐작하고 있는데요, 제가 생각한게 맞을까요 ? 제 생각이 맞다면 수동 주입 시에도 @Configuration 이 없어도 @Configuration 이 적용되어 싱글톤으로의 반환이 보장될 것 같은데.. 잘 모르겠습니다.
- 미해결스프링 핵심 원리 - 기본편
appconfig에 들어가는 memberService는 memberService의 생성자인가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]public class AppConfig { public MemberService memberService(){ return new MemberServiceImp(new MemoryMemberRepository()); 이 코드가 생성자라면 public MemberServiceImp memberServiceImp(){ return new MemberServiceImp(new MemoryMemberRepository()); 이런식으로 되야하는게 아닌가 싶습니다.
- 미해결스프링 핵심 원리 - 기본편
스프링 빈은 항상 stateless로 설계해야 한다는 말에 대해 궁금증이 있습니다.
만약 스프링 특정 빈에 아래와 같이 캐시를 저장하고 있다면 Map<String,Article> articleCache캐시로 동작하는 Map 객체는 stateful이라고 생각됩니다. 근데 이게 싱글톤으로 동작하지 않고, 매번 객체를 새로 생성한다면 캐시의 의미가 사라지지 않나요?그래서 '스프링 빈은 항상 stateless'로 설계해야 한다가 과연 늘 옳은 말인지 궁금합니다.
- 미해결스프링 핵심 원리 - 기본편
Long과 long의 차이
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의를 보다 보면 어떤 경우엔 Long을 쓰고 또 어떤 경우엔 long을 쓰던데 둘의 차이가 있나요?
- 미해결스프링 핵심 원리 - 기본편
빈으로 등록된 NetworkClient 객체에 관하여 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.빈으로 등록된 NetworkClient 객체에 관하여 질문드립니다.코드를 참조하면 LifeCycleConfig.class만 파라미터로 받고 있기 때문에 빈에 등록된 것은 NetWorkClient객체라고 생각됩니다. 그러면 NetWorkClient 객체 내에 있는 필드 url은 빈으로 등록되지 않는건가요?만약 그렇다면 의존관계 주입은 이루어지지 않는건가요?
- 미해결스프링 핵심 원리 - 기본편
타입이 겹치는 컴포넌트를 스캔
"컴포넌트 스캔과 의존관계 자동 주입 시작하기" 강의를 듣고 질문 남깁니다. 실습 코드를 따라 RateDiscountPolicy에 Component를 붙여주었는데, FixDiscountPolicy에도 Component를 붙여주면 어떻게 될지 궁금하여 붙였습니다.그랬더니 에러가 발생하더라구요타입이 겹치는 컴포넌트가 있으면 스캔이 안되나요? 이런 경우도 컴포넌트 이름을 지정해주어야 하나요?혹시 뒤에 나오는 내용을 제가 먼저 궁금증을 가져버린 건가요ㅠㅠ
- 미해결스프링 핵심 원리 - 기본편
스프링 빈 등록과 의존관계 설정
안녕하세요. 스프링 컨테이너에 스프링 빈이 등록되는 과정이 두 단계로 이루어진다고 설명해주셨는데요. 어떤 방식으로 이루어 지는지 궁금합니다. memberService : 덤프객체1orderService : 덤프객체2memberRepository : 덤프객체3discountPolicy : 덤프객체 4스프링 빈 등록 단계 -> 스프링 빈 이름 : 의미없는 객체 스프링 빈 의존관계 주입 단계 -> 객체 생성 시 주입 받을 필요가 없는 기본 생성자 객체부터 생성한다. 그 이후 생성자 주입이 필요한 객체들을 생성한다. memberService : new MemberServiceImpl( ??? )orderService : new OrderServiceImpl( ???, ??? )memberRepository : new MemoryMemberRepository()discountPolicy : RateDiscountPolicy()스프링 빈 등록 단계 -> 스프링 빈 이름 : 객체 생성. 하지만 생성자 주입을 받아야하는 객체들은 스프링의 어떠한 조치로 인해 ???인자로 채워 넣음으로 의존관계 설정 유보스프링 빈 의존관계 주입 단계 -> 생성자 주입이 필요한 객체들에 맞게 의존관계 주입 memberService : new MemberServiceImpl (MemberRepsotory)orderService : new OrderServiceImpl(MemberRepository, DiscountPolicy)memberRepository : new MemoryMemberRepository();discountPolicy : new RateDiscountPolicy();스프링 빈 등록 단계 -> 스프링 빈 이름 : 순서대로 메소드 호출하며, 생성자 주입이 필요하다면 해당 객체부터 생성 후 주입 받아서 객체 생성 전 이 세가지가 떠오르는데 어떤 방법으로 나뉘어 실행되는지 도움 부탁드립니다. 감사합니다.
- 미해결스프링 핵심 원리 - 기본편
OrderService 도메인 설계관련 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] 저는 학습을 진행할 때, 요구사항만 보고 제 나름대로의 코드를 쳐보고 그 후, 영한님의 코드를 보면서 고칠 부분은 고치고 , 수정하는 방식으로 학습을 합니다. OrderService 내부에 MemberService를 이용하면 안되거나 혹은 단점이 있을까요?저는 memberService가 member와 관련된 로직을 처리하는걸 담당하기 때문에, memberService를 부르는게 맞다고 생각했습니다. 하지만, 강의에서는 memberRepository를 직접 부르는 형태로 구현을 하시더라구요.기능적인 차이는 없겠지만, 어떤게 더 좋은방식인지 고민하다가 ,질문을 올려봅니다!
- 해결됨스프링 핵심 원리 - 기본편
스프링 Checked Exception/ Unchecked Exception에 대한 질문입니다.
안녕하세요. 강의 잘 듣고 있습니다. 코드 작성하다가 예외처리에 대한 궁금증이 있어 질문드립니다.제가 알고있는 스프링 예외처리 정책은 Unchecked Exception은 같은 트랜잭션 내에서 Rollback 되고 Checked Exception은 필수로 try catch로 예외처리를 해서 Rollback이 안되는 것으로 알고 있습니다.Unchecked Exception도 try-catch로 잡아서 예외를 처리하려고 하는데 Unchecked Exception은 Checked Exception과는 다르게 중간에서 예외를 잡아도 가장 상위 메소드로 올라가서 예외가 발생되더라구요. 때문에 최상위 메소드에서 try-catch로 잡아줘야지만 예외가 잡히고 다음 스텝으로 넘어가던데 왜 중간에서 try - catch로 잡히지 않는 것인지 궁금합니다. 간단한 코드 첨부하겠습니다.class A { @Autowired private B b; @Transactional void aMethod(){ for(int i=0; i<10; i++){ b.bMethod(i); } } }class B { @Autowired private C c; @Transactional void bMethod(int i){ try{ c.cMethod(i); }catch(RuntimeException e){ //예외처리로직 } } }class C { @Autowired private CRepository cRepository; @Transactional void cMethod(int i){ if(i==5){ throw new RuntimeException(); }else{ cRepository.save(i); } } }위의 코드를 실행하면 B class의 try catch가 C에서 발생한 RuntimeException을 잡아서 계속 직행하지 못하고 A까지 예외가 올라가서 예외가 발생됩니다.try catch 블록을 A class로 옮기면 예외를 잡아서 console에 예외가 터지지 않고 정상 작동됩니다. Checked Exception은 저렇게 중간에 예외를 잡아도 예외가 상위 메소드로 올라가지 않고 처리되던데 Unchecked Exception은 왜 최상위 메소드까지 올라가서 처리를 해줘야하는지 궁금합니다.