안녕하세요 중재자 패턴을 공부하던 중에 궁금한 점이 있어서 질문하게되었습니다. 1. 현재 강의에서는 ConcreteMediator(FrontDesk)와 ColleagueA(Guest) , ColleagueB(CleaningService) ColleagueC(Restaurant) ... 이렇게 구성되는걸로 파악되는데 현재 ConcreteMediator에 대한 인터페이스(Mediator)와 그 인터페이스를 참조하는 Colleague가 만들어 있지 않은데 굳이 만들지 않아도 괜찮은건가여? 2.중재자 패턴을 ConcreteMediator에 모든 의존성을 다 가지게 만들어서 사용한다 라고 이해하면 되나요??
프록시 대리자를 통칭 디자인 패턴 프록시 패턴 접근 제어 캐싱(Caching), 지연 로딩(Lazy Loading) 검증(Valid), 인증(Auth) 데코레이터 패턴 부가 기능 로깅(Log) 컨버터(Convertor), 포맷터(Formatter) 스프링 프록시 포인트 컷 검증(Filter)만 담당 어드바이스 검증 이외의 모든 로직을 담당 데코레이터 패턴 + 프록시 패턴(캐싱, 지연 로딩) 어드바이저 포인트 컷 1개 + 어드바이스 1개의 묶음 위와 같이 이해하는게 맞게 이해하고 있는지 궁금합니다.
동시성 문제를 해결하기 위해서 쓰레드 로컬이 각 쓰레드별 전용 저장공간을 만들어 데이터를 저장한다고 하셨는데 JVM의 메모리영역중에서 힙과 메소드영역은 모든 쓰레드가 공유하지만 각 쓰레드별로 스택공간이 할당된다고 알고 있습니다. 그렇다면 쓰레드 로컬을 통해 데이터를 저장하면 각 쓰레드의 스택영역에 데이터가 저장되는 것인가요? 만약 아니라면 쓰레드 로컬과 각 쓰레드의 스택영역에 저장되는 데이터들은 어떤 차이가 있는 것인지 궁금합니다.
안녕하세요! 영한님 강의 정말 감사합니다! 궁금한게있어요! 그러면 Srping 에서 제공하는 트랜잭션이 default로 CGLIB 를 사용하는 것을 알겠습니다. 또한, 프록시 패턴을 통해서 inner method가 트랜잭션이 안탄다는것도 완벽 이해했습니다. ( self invocation ) 그럼 당연히 @Transactional public void a () { // logic innerMethod() } private void innerMethod() { } 와 같은 코드에서도 innerMetohd가 target 에 걸리는 바람에 트랜잭션이 끊기는 걸로 이해했는데요. 맞나요!?
순환참조 방지용으로 생성자에 @Lazy 어노테이션을 추가했습니다. 강의내용에는 properties에 다음과 같이 설정하라고 하셨는데 spring.main.allow-circular-references=true 위 속성 대신 @Lazy 어노테이션을 사용했을때 문제가 발생할 수 있는 가능성이 있는 케이스가 있을까요?
선생님 안녕하세요! 자바 강의부터 디자인패턴 강의까지 선생님의 수업으로 많은 것을 배우고 있는 수강생입니다. 선생님의 디자인패턴 강의를 복습차 정리하여 개인 블로그에 올려도 괜찮을지 문의드립니다. 허락하신다면, 강의에서 배운 디자인패턴 내용을 제가 이해한 부분 중심으로 정리하고, 예시코드 일부를 함께 게시하려고 합니다! (해당 강의 링크를 출처로 기재하겠습니다) 혹시 강의 자료와 내용의 저작권과 관련된 문제가 생길 수 있다면 게시하지 않겠습니다!
newProxyInstance(ClassLoader, Class<?>[] interfaces, InvocationHandler) newProxyInstance의 인자는 위와 같습니다. 본 강의에서는 interfaces 배열에 하나의 interfaces만 들어있습니다. 그리고, interfaces배열에 딱 하나 들어있는 그 인터페이스 클래스에서 getClassLoader()로 클래스로더를 받아와서 이를 newProxyInstance를 호출할때 첫번째 인자로 사용하고 있습니다. Q1. 그렇다면 만약, interfaces에 하나가 아닌 여러개가 있다고 하면 클래스로더는 어디서 받아오나요? 임의의 인터페이스에서 골라서 받아오나요? Q2. 사실 클래스로더는 아무 클래스에서 받아와도 상관없는것이고. 관습적으로 interfaces 배열에 들어있는 임의의 인터페이스에서 받아오는것이다. 이런건가요? 질문 읽어주셔서 감사합니다.
안녕하세요. 영한님!! ThreadLocal 쪽강의를 듣다가 궁금하게 생겨 질문하게 되었습니다. java에서 동시성을 해결할 수 있는 방법 중 하나인 synchronized가 있다고 알고 있습니다. ThreadLocal과 비교해볼 때 성능적으로 큰 차이가 있을까요??? 혹은 코드 취향에 따라 선택적으로 사용하면 될지 문득 궁금하여 질문을 남겼습니다.
강의에서 사실 의미 없다고 모니터링 툴을 쓰면 된다고 하는데 어떤 툴을 써야하나요? 진입 시점을 알려주는것보면 그냥 오류메시지를 전달하는 형태는 아닌 것 같고, 센트리라는 것을 사용하면 저런형태로 커스터마이징 할 수 있는건가요? 저번에 제가 도입해보려다가 무료기간이 1주일정도라서, 그냥 err메시지를 슬랙으로 전송해주는 모니터링만 구현했었거든요... 말씀하시는 모니터링툴이 무엇인지 알고싶습니다 김영한 선생님!
구체 클래스 기반 프록시를 강의와 동일하게 적용해 보았습니다. target에 RequestMapping을 설정했으나 실제로 적용이 되지 않았습니다. (혹시 몰라 proxy에도 설정했었지만 적용되지 않았습니다.) 디버깅 해보면 /v2/request가 없는 거까진 확인했습니다.