묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨C개발자를 위한 최소한의 C++
인스턴스의 개념에 대해 int a(3), int(5) 예시를 바탕으로한 질문입니다.
안녕하세요, 강사님.int a(3)은 인트형식(혹은 클래스)의 인스턴스 a를 3으로 초기화 한것이고, 상수 5가 int(5) 인트형식(클래스)의 인스턴스 5라고 한다면,Q1 인트형식의 상수들은 다 인스턴스인 것인가요?Q2 int(5)라는건 식별자가 없는 인스턴스 인거고 가령, int(5) + int(3) == int(7) 이렇게 기술했을때 참이 되나요?
-
미해결얄코의 객체지향 디자인 패턴
빌더패턴 질문있습니다!
2분대에 나오는 PizzaBuilder static내부 클래스에 기본 생성자가 없으면 뒤에 나오는 main문에서 new Pizza.PizzaBuilder()가 가능한가요??
-
미해결스프링 핵심 원리 - 고급편
proxyFactory cglib 자동적용 관련 질문
@Bean public Advisor logTraceAdvisor(LogTrace logTrace) { LogTraceAdvice logTraceAdvice = new LogTraceAdvice(logTrace); DefaultPointcutAdvisor advisor = new DefaultPointcutAdvisor(pointcut(), logTraceAdvice); return advisor; } @Bean public Pointcut pointcut() { NameMatchMethodPointcut pointcut = new NameMatchMethodPointcut(); pointcut.setMappedNames("request*", "order*", "save*"); return pointcut; } @Bean public OrderControllerV2 orderControllerV2(LogTrace logTrace) { OrderControllerV2 target = new OrderControllerV2(orderServiceV2(logTrace)); ProxyFactory proxyFactory = new ProxyFactory(target); // 이걸 넣었더니 되네요 proxyFactory.setProxyTargetClass(true); // proxyFactory.addAdvisor(logTraceAdvisor(logTrace)); return (OrderControllerV2) proxyFactory.getProxy(); } @Bean public OrderServiceV2 orderServiceV2(LogTrace logTrace) { OrderServiceV2 target = new OrderServiceV2(orderRepositoryV2(logTrace)); ProxyFactory proxyFactory = new ProxyFactory(target); proxyFactory.addAdvisor(logTraceAdvisor(logTrace)); return (OrderServiceV2) proxyFactory.getProxy(); } @Bean public OrderRepositoryV2 orderRepositoryV2(LogTrace logTrace) { OrderRepositoryV2 target = new OrderRepositoryV2(); ProxyFactory proxyFactory = new ProxyFactory(target); proxyFactory.addAdvisor(logTraceAdvisor(logTrace)); return (OrderRepositoryV2) proxyFactory.getProxy(); }proxyFactory.setProxyTargetClass(true); 이 없더라도 자동으로 ProxyFactory가 인터페이스 기반이 아닐경우 cglib으로 프록시를 생성해야하는데 위의 주석사이의 코드가 없을 경우 다음과 같은 에러가 뜹니다.(jdk로 하려다가 실패하는 모양인데 이 말은 자동으로 cglib으로 proxyfactory가 돌리지 못했다... Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [hello.proxy.app.v2.OrderControllerV2]: Factory method 'orderControllerV2' threw exception; nested exception is java.lang.ClassCastException: class jdk.proxy2.$Proxy50 cannot be cast to class hello.proxy.app.v2.OrderControllerV2 (jdk.proxy2.$Proxy50 is in module jdk.proxy2 of loader 'app'; hello.proxy.app.v2.OrderControllerV2 is in unnamed module of loader 'app')강제로 setProxyTargetClass(true)로 하여금 설정해준다면 자동 설정기능을 사용하지 않은 것이라.. 왜 이런지 궁금하네요.제 코드가 실습 실제 코드와 약간 달라 실습 코드를 복사해서 쳐봐도 동일한 증상이 나타났어요.또한 setPorxyTargetClass를 지정해줘야 한다면 왜 컨트롤러에서만 해도 다 되는지도 의문입니다.
-
미해결스프링 핵심 원리 - 고급편
오타 제보....
안녕하세요 강사님강의 잘 듣고 있습니다.수업 내용을 정리하다가 별거 아니지만....오타 제보 입니다! 창구 지원 -> 창구 직원
-
해결됨C개발자를 위한 최소한의 C++
식별자 검색 순서 관련 namespace 생략 관련 오류에 관한 질문
강의 식별자 검색 순서 5분 50초 쯤에서 namespace안 Test int data를 주석하는 경우namespace Test 안의 cout << data<< endl; 에서 data가 모호성이 발생해서 에러가 나는 예시를 보여 주셨습니다. 그 이유를 data의 모호성으로 인해서 global space에 만 data가 있고 cout을 하는 Test namespace에서 data가 없으면 에러를 발생 한다고 하셨는데 std::data 와의 모호성 때문에 생기는 거로 생각 되고 namespace test안에 없고 외부에만 변수가 있더라도 std 같은 중복되지 않는 경우에는 빌드할 때 모호성때문에 에러가 발생 하지는 않지 않나요?물론 이렇게 하면 코딩할 때 햇갈리긴 할꺼 같습니다.
-
미해결스프링 핵심 원리 - 고급편
InterfaceProxyConfig에 관한 질문
@Configuration public class InterfaceProxyConfig { @Bean public LogTrace logTrace() { return new ThreadLocalLogTrace(); } @Bean public OrderControllerV1 orderController() { return new OrderControllerInterfaceProxy(new OrderControllerV1Impl(orderService()), logTrace()); } @Bean public OrderServiceV1 orderService() { return new OrderServiceInterfaceProxy(new OrderServiceV1Impl(orderRepository()), logTrace()); } @Bean public OrderRepositoryV1 orderRepository() { return new OrderRepositoryInterfaceProxy(new OrderRepositoryV1Impl(), logTrace()); } }강의 보기 전에 멈춰서 제가 먼저 configuration을 만들어봤는데 결과는 똑같은 거 같더라구요강의와 config하는 방식이 다른데 로직 자체는 똑같은 거 맞나요?(혹시나 logTrace를 빈으로 등록하고 사용해서 일관성이 깨질 수도 있나 생각했습니다.)그리고 parameter로 받는 것과 이렇게 빈으로 등록한 것의 차이가 무엇일까요?
-
해결됨스프링 핵심 원리 - 고급편
프록시 객체가 생겼다는 가정 하에 this와 target이 설명되어서 조금 헷갈리는 것 같습니다
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]프록시 적용 여부와 어드바이스 적용 여부가 한번에 설명되어서 약간 헷갈리는 것 같습니다.예제에서 사용한 방식은 컴포넌트 스캔으로 등록된 빈을 후처리기를 통하여 프록시로 생성합니다강의를 들은 후 위의 그림처럼 this(hello.aop.member.MemberServiceImpl) 포인트 컷으로 사용한 어드바이저만을 등록하는 경우를 시험해 보았습니다.아예 프록시 객체가 생성되지 않을 것 이라고 예상하였는데 로그를 보면예상과 다르게 프록시 객체가 생성되었음을 확인하였습니다.그렇다면 @Around("this(hello.aop.member.MemberServiceImpl)") 여기에서1. 프록시 객체를 생성할 때는 hello.aop.member.MemberServiceImpl 만을 보고 생성해 준다2. 후에 어드바이스를 적용할 지 판단할 시에는 this까지 고려하여 판단한다. -> 강의 내용에 따라 적용 안됨라고 정리할 수 있을까요??
-
해결됨스프링 핵심 원리 - 고급편
어드바이스에 매개변수를 전달한다 는 개념이 잘 이해가지 않습니다
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]aop가 적용되는 메서드(joinpoint)의 정보 를 어드바이스에서 편하게 사용하려고 전달하는 걸까요?또한 @Before("allMember() && args(arg,..)") public void logArgs3(Integer arg) { log.info("[logArgs3] arg={}", arg); }이렇게 hello메서드의 매개변수가 String이었는데 Integer로 설정해주게 되면 필터링 역할도 같이 수행하는 것으로 보이는데 제대로 이해한 것이 맞는지 궁금합니다
-
미해결얄코의 객체지향 디자인 패턴
파사드 패턴에 대해 질문이 있습니다.
안녕하세요 강의 잘 보고 있습니다.파사드 패턴에 대해 질문이 있습니다.얄코님이 올려주신 예시에선 다음과 같이 두 상황이 나온다고 이해했습니다.다양한 서브 시스템을 파사드 클래스로 조합해 하나의 새로운 로직을 만듦.여러 서브 시스템을 생성시키고 세부 로직을 파사드 클래스에 위임.1번의 경우는 일종의 추상화로 이해하였으며, 2번의 경우 서브 시스템에 대한 의존성 주입을 파사드 클래스에 위임 및 세부적인 로직을 캡슐화하는데 의의를 두었다고 이해했습니다. 만약 의존성 주입은 자동으로 이루어지는 3-layer 아키텍쳐에서 파사드 패턴을 도입할 경우 이미 service 레이어에서 내부 로직에 대해 캡슐화가 되었으므로 다양한 서브시스템을 파사드 클래스로 조합하는 것(ex. 1번)에만 집중하면 될까요?
-
해결됨스프링 핵심 원리 - 고급편
JDK 동적 프록시 호출 메서드 감지?
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]proxy의 call을 호출한 후 어떻게 InvocationHandler.invoke() 를 호출하는 걸까요?
-
해결됨C개발자를 위한 최소한의 C++
nullprt vs null
안녕하세요. 마지막 주소록 예제를 따라하면서 궁금한 부분이 있어 질문드립니다. 두 가지 예제를 비교했을 시, 포인터를 초기화 시, NULL / nullptr 두 가지 방식을 모두 사용되고 있습니다. NULL로 초기화와 nullptr 초기화 방식에 있어, 어떠한 기준이 있는지 궁금합니다 ~ int MyList::addNewNode(const char* pName, const char* pPhone) { UserData* pNewUser = nullptr; // nullptr로 초기화 if (findNode(pName) != nullptr) return 0; pNewUser = new UserData; strcpy_s(pNewUser->name, sizeof(pNewUser->name), pName); strcpy_s(pNewUser->phone, sizeof(pNewUser->phone), pPhone); pNewUser->pNext = NULL; // NULL로 초기화 return 0; }void CMyList::releaseList(void) { CUserData *pTmp = m_Head.pNext; CUserData *pDelete = NULL; while (pTmp != NULL) { pDelete = pTmp; pTmp = pTmp->pNext; delete pDelete; } m_Head.pNext = NULL; }
-
미해결스프링 핵심 원리 - 고급편
수동으로 빈 등록하는 부분에서 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@Slf4j @Configuration @Import({AppV1Config.class, AppV2Config.class}) public class BeanPostProcessorConfig { @Bean public PackageLogTracePostProcessor logTracePostProcessor(LogTrace logTrace) { return new PackageLogTracePostProcessor("hello.proxy.app", getAdvisor(logTrace)); } private Advisor getAdvisor(LogTrace logTrace) { //pointcut NameMatchMethodPointcut pointcut = new NameMatchMethodPointcut(); pointcut.setMappedNames("request*", "order*", "save*"); //advice LogTraceAdvice advice = new LogTraceAdvice(logTrace); return new DefaultPointcutAdvisor(pointcut, advice); }위와 같이 코드를 작성하셨을 때, @Import 코드가 잘 이해가 안됩니다 "AppV1Config와 AppV2Config는 수동으로 스프링 빈으로 등록해야 동작한다" 근데 AppV1Config와AppV2Config 코드를 보면 아래와 같습니다.근데 @Configuration이 붙은 클래스는 컴포넌트 스캔의 대상이 되고, 필드에 있는 @Bean이 붙은 메소드의 반환 값은 빈으로 자동 등록된다라고 이해를 하고있었습니다. 근데, 강사님께서 말씀하신 "@Import로 수동으로 빈으로 등록한다"라는 부분이 잘 이해가 안됩니다. 설명 부탁드립니다 ! @Configuration public class AppV1Config { @Bean public OrderControllerV1 orderControllerV1() { return new OrderControllerV1Impl(orderServiceV1()); } @Bean public OrderServiceV1 orderServiceV1() { return new OrderServiceV1Impl(orderRepositoryV1()); } @Bean public OrderRepositoryV1 orderRepositoryV1() { return new OrderRepositoryV1Impl(); }@Configuration public class AppV2Config { @Bean public OrderControllerV2 orderControllerV2() { return new OrderControllerV2(orderServiceV2()); } @Bean public OrderServiceV2 orderServiceV2() { return new OrderServiceV2(orderRepositoryV2()); } @Bean public OrderRepositoryV2 orderRepositoryV2() { return new OrderRepositoryV2(); }여기에 질문 내용을 남겨주세요.
-
미해결스프링 핵심 원리 - 고급편
AspectJ 동작원리 궁금
@Aspect public class A{ @Before("B.methodB()호출하기전에 적용") public Object lock(final ProceedingJoinPoint joinPoint) throws Throwable { } } public class B{ private void methodB(){ } }이런식으로 작성할 경우, 당연히 Before은 ProceedingJoinPoint를 사용할 수 없기때문에 lock이 호출이 안될겁니다.그런데 왜 안되는지 궁금해서 한번 실행시켜봤는데,스프링 실행 자체는 되나, 아무런 예외없이 정상적으로 lock함수를 호출하지 않더라고요그래서 호출스택을 따라가보았더니, 아예 호출 자체를 안하는것을 확인 할 수 있었습니다.그렇다면 왜그럴까 추측을 해보자면 아예 methodB에 프록시로 lock()을 등록하지 않은것일텐데(맞나요..?)어디서 이와 관련된 처리를 하는지 찾다가 포기하고 질문을 올립니다.AspectJProxyFactory에서 lock()을 advisor로 만드는것 까진 확인했으나, 이것을 어디서 활용하는지 모르겠네요 ㅠ어떤 클래스를 보면 알수있다 정도로도 좋으니 혹시 아시는게 있다면 알려주시면 감사드리겟습니다.
-
미해결스프링 핵심 원리 - 고급편
필터와 인터셉터에서 스레드 로컬 clear
안녕하세요 강의 끝부분에서 스프링 필터나 인터셉터에서 스레드 로컬 값들 클리어해주는게 베스트인 뉘앙스로 얘기해주셨는데요.(혹은 원칙대로 최소 remove() 호출해주거나요) remove() 호출을 생각할 때, 보관된 값 제거는 스레드 로컬이 적용된 특정 인스턴스 필드값을 알아야 가능해보입니다.e.g. traceIdHolder.remove()필터 및 인터셉터에서는 이 인스턴스 변수를 알 수 없을 것 같은데, 어떻게 스레드 로컬에 보관된 값을 제거할 수 있을까요?머릿속에 잘 그려지지 않아서 질문 드립니다.
-
해결됨스프링 핵심 원리 - 고급편
logTrace를 파라미터로 받는 이유 ?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.InterfaceProxyConfig에서 logtrace를 파라미터로 받아오는 특별한 이유가 있을까요 ? logtrace를 이런식으로 생성자 주입으로 받아서 사용한다면 문제가 생길까요 ? 정상작동은 하는데 궁금합니다. @RequiredArgsConstructor @Configuration public class InterfaceProxyConfig { private final LogTrace logTrace; @Bean public OrderControllerV1 orderController(){ OrderControllerV1Impl controllerImpl = new OrderControllerV1Impl(orderService()); return new OrderControllerInterfaceProxy(controllerImpl,logTrace); } @Bean public OrderServiceV1 orderService(){ OrderServiceV1Impl serviceImpl = new OrderServiceV1Impl(orderRepository()); return new OrderServiceInterfaceProxy(serviceImpl,logTrace); } @Bean public OrderRepositoryV1 orderRepository(){ OrderRepositoryV1Impl repositoryImpl = new OrderRepositoryV1Impl(); return new OrderRepositoryInterfaceProxy(repositoryImpl,logTrace); } }
-
해결됨스프링 핵심 원리 - 고급편
ProxyApplication 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.LogTrace를 @Bean등록할때 ProxyApplication 쪽에 등록한 특별한 이유는 없는건가요 ? 그냥 InterfaceProxyConfig안에 등록해도 상관은 없는거죠 ? @Configuration public class InterfaceProxyConfig { @Bean public OrderControllerV1 orderController(LogTrace logTrace){ OrderControllerV1Impl controllerImpl = new OrderControllerV1Impl(orderService(logTrace)); return new OrderControllerInterfaceProxy(controllerImpl,logTrace); } @Bean public OrderServiceV1 orderService(LogTrace logTrace){ OrderServiceV1Impl serviceImpl = new OrderServiceV1Impl(orderRepository(logTrace)); return new OrderServiceInterfaceProxy(serviceImpl,logTrace); } @Bean public OrderRepositoryV1 orderRepository(LogTrace logTrace){ OrderRepositoryV1Impl repositoryImpl = new OrderRepositoryV1Impl(); return new OrderRepositoryInterfaceProxy(repositoryImpl,logTrace); } @Bean public LogTrace logTrace(){ return new ThreadLocalLogTrace(); }이런식으로요. 생각해보면 logtrace는 proxyconfig쪽이랑은 크게 연관성이 없는거같긴한데 궁금해서요 ..
-
해결됨스프링 핵심 원리 - 고급편
데코레이터 패턴에서 Component 코드 질문 있습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.아래와 같은 코드에서 MessageDecorator 클래스는 Component 인터페이스를 구현하면서 operation 메서드를 구체화한 것은 이해를 했습니다.근데 데코레이터 패턴에서 MessageDecorator 클래스가 Component 클래스를 구현하면서 Component 클래스를 필드로 갖는 이유가 무엇인지 잘 이해가 안됩니다 설명 부탁드립니다 package springHigh.advanced.pureproxy.decorator.code; import lombok.extern.slf4j.Slf4j; @Slf4j public class MessageDecorator implements Component{ private Component component; public MessageDecorator(Component component) { this.component = component; } @Override public String operation() { log.info("MessageDecorator 실행"); // data => *** data **** String result = component.operation(); String decoResult = "******" + result+"*******"; log.info("MessageDecorator 적용"); return decoResult; } }
-
해결됨스프링 핵심 원리 - 고급편
스프링 빈으로 수동으로 등록이 안됩니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 위와같이 설정했을 때, http://localhost:8080/v1/request-proxy?itemId=hello로 접근했는데 올바르게 컨트롤러가 인식이 안되는데 원인이 무엇인가요?
-
미해결스프링 핵심 원리 - 고급편
예외 처리 부분 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]항상 강의 잘 보고 있습니다. 감사합니다.강사님 자료 중에 "throw e: 예외를 꼭 다시 던져주어야 한다. 그렇지 않으면 여기서 예외를 먹어버리고, 이후에 정상 흐름으로 동 작한다. 로그는 애플리케이션에 흐름에 영향을 주면 안된다. 로그 때문에 예외가 사라지면 안된다"라는 문장에서예외를 다시 던져준다와 예외를 먹어버린다 등의 표현이 잘 이해가 안되는데 설명 부탁드립니다. 감사합니다
-
미해결스프링 핵심 원리 - 고급편
실무에서 어떻게 모니터링을 하는지 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]항상 훌륭한 강의 잘 보고 있습니다.다름이 아니라, 강사님께서 "모니터링 툴을 도입하면 많은 부분이 해결되지만, 해결하지 못하는 부분도 있다"라고 말씀하셨습니다.그러면 실무에서는 모니터링 툴 + 스프링을 활용하는건가요?아니면 모니터링 툴만 사용하는건가요? 실무에서 스프링을 활용한 로그 추적이 어떻게 사용되는지 궁금합니다!