inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

ContextV1 은 템플릿 콜백 패턴이 아닌가요?

미해결

스프링 핵심 원리 - 고급편

ContextV2는 템플릿 콜백 패턴이라고 하셨는데 ContextV1 은 템플릿 콜백 패턴이 아닌가요?

  • spring
  • 디자인-패턴
플하 댓글 2 좋아요 0 조회수 372

aop에서 DB 접근?

미해결

스프링 핵심 원리 - 고급편

안녕하세요 영한님 강의를 토대로 개인프로젝트를 진행하다가 생긴 의문점입니다 스프링 시큐리티의 @Preauthorize를 공부하다가 생긴 의문인데, 만일 여러 컨트롤러의 메서드에서 단순히 User의 ROLE_XXX 뿐만이 아니라, 현재 유저에게 이 리소스를 사용할 자격이 있는지? 를 검사하는 공통된 로직이 필요하다면 (리소스 단순 CRUD 뿐만이 아니라 더 세부적인 로직들이 있다면), 여기에 aop를 적용하는 의의가 있을까요? 만일 의의가 있다면, 권한이 있는지를 알려면 DB에 다녀와야 하는데 AOP에서 데이터소스에 접근하는별로 좋은 방법이 아니라고 들었습니다. 간단한 예시긴 하지만, 대충 이런 로직을 구현하려고 합니다 @CheckOwner어노테이션이 붙어있고, postId를 인자로 받은 경우에선 post.Member.id 가 현재 세션의 memberId와 같은 경우에만 이후 로직이 진행되게 하려는 의도입니다. @Around("@annotation(CheckOwner) && args(postId,..)") public Object checkPostOwner(ProceedingJoinPoint joinPoint, Long postId) throws Throwable { log.info("test"); //DefaultTransactionDefinition def = new DefaultTransactionDefinition(); //TransactionStatus status = tr.getTransaction(def) MockPrincipal principal = (MockPrincipal)SecurityContextHolder.getContext() .getAuthentication() .getPrincipal(); Post post = postRepository.findById(postId).orElseThrow(NoPostException::new); if (!post.getMember().getId().equals(principal.getId())) { throw new AccessDeniedException("권한이 없다고"); } Object result = joinPoint.proceed(); log.info("test"); //tr.commit(status); return result; }

  • spring
  • 디자인-패턴
jiheon 댓글 1 좋아요 0 조회수 312

반환유형이 클래스형 참조

해결됨

C개발자를 위한 최소한의 C++

안녕하세요 강사님, 반환 유형이 클래스 참조일 때 질문이 있습니다. 반환유형이 클래스형인 것보다는 메모리 효율을 위해서 클래스형 참조로 선언을 하는데, 반환하는 참조가 함수 내부에서 생성된 지역 인스턴스의 참조라면 함수 스코프를 벗어나면 해당 인스턴스는 소멸되므로 main함수에서는 참조를 못하게 되는 것 아닌가요? 이런 경우에는 반환 유형을 클래스형 참조가 아닌 클래스형으로 선언하는게 적절할까요? 감사합니다!

  • c++
  • microsoft-windows
  • 객체지향
  • 디자인-패턴
댓글 1 좋아요 0 조회수 246

강사님 질문 드립니다.

해결됨

C개발자를 위한 최소한의 C++

만약 함수내에서 func(ClassA a) { // 여기서 a 는 클래스임 } 과 같이 작성하면 ClassA 의 생성자는 호출되지 않지만 소멸자는 호출됩니다. 그 이유를 알고 싶습니다.

  • c++
  • microsoft-windows
  • 객체지향
  • 디자인-패턴
내일은 한걸음 더 나아갈거야 댓글 1 좋아요 0 조회수 224

동기화와 동시성 차이

미해결

스프링 핵심 원리 - 고급편

동시에 traceId의 공유변수에 접근하니까 문제가 생겨서 그걸 동시성 문제라고 하는데 동기화에 문제가 있다는건 무슨말일까요?

  • spring
  • 디자인-패턴
플하 댓글 1 좋아요 0 조회수 452

virtual 함수와 관련하여 질문 있습니다.

해결됨

C개발자를 위한 최소한의 C++

만약 기본 메서드로 virtual a() 를 정의한 후 첫번째 파생 클래스에서는 a() 로 정의를 하였습니다. 마지막 파생 클래스에서도 a() 로 정의했다면 어떻게 동작하는지 궁금해서 여쭤 봅니다. 제 생각에는 기본하고 첫번째 파생 사이에는 virtual 처럼 즉 기본을 호출해도 파생이 호출될 거 같은데 두번째 파생시에는 virtual 의 성격이 사라질 거 같습니다. 확인 부탁드립니다. 강사님

  • c++
  • microsoft-windows
  • 객체지향
  • 디자인-패턴
내일은 한걸음 더 나아갈거야 댓글 1 좋아요 0 조회수 162

생성자와 소멸자의 호출

해결됨

C개발자를 위한 최소한의 C++

04_Constructor 테스트 중에 질문 드립니다. Test test01; 과 같이 선언하면 생성자와 소멸자가 모두 호출되는데 Test test02 = new Test(); 와 같이 호출하게 되면 소멸자는 호출되지 않습니다. 그 이유가 뭔지 궁금합니다. 친절한 강의 감사드립니다.

  • c++
  • microsoft-windows
  • 객체지향
  • 디자인-패턴
내일은 한걸음 더 나아갈거야 댓글 1 좋아요 0 조회수 171

멋지지 않나요?

미해결

스프링 핵심 원리 - 고급편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 우리의 멘토 꽤 멋지심

  • spring
  • 디자인-패턴
wnguddl96 댓글 1 좋아요 1 조회수 373

질문은 아니고 후기는 강의를 다듣고 남길려고 하는데

미해결

스프링 핵심 원리 - 고급편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 영한님의 강의력에 정말 감탄이 나오는군요 한마리의 백조같은 유려하고 우아한 설명이에요

  • spring
  • 디자인-패턴
hani553 댓글 1 좋아요 0 조회수 374

강사님 질문 드립니다.

해결됨

C개발자를 위한 최소한의 C++

opArithmetic 교육시에 "=" 오퍼레이터의 반환자를 *this 로 하지 않으면 문제가 생길거라 하셨는데 구체적인 문제 설명이 없으셔서 궁금합니다.

  • c++
  • microsoft-windows
  • 객체지향
  • 디자인-패턴
내일은 한걸음 더 나아갈거야 댓글 1 좋아요 0 조회수 182

콜백 패턴 반환 타입 T가 두번 쓰이는 이유

미해결

스프링 핵심 원리 - 고급편

public class TraceTemplate { private final LogTrace trace; public TraceTemplate(LogTrace trace) { this.trace = trace; } public <T> T excute(String message, TraceCallBack<T> callback){ TraceStatus status = null; try { status = trace.begin(message); //로직 호출 T result = callback.call(); trace.end(status); return result; } catch (Exception e) { trace.exception(status, e); throw e; } } } 위 콜백 템플릿 에서 메서드 반환이 T 제네릭인건 이해가 되는데 왜 반환이 T가 2번 쓰이는걸까요?

  • spring
  • 디자인-패턴
JunSuPark 댓글 1 좋아요 1 조회수 457

강사님 질문 드립니다.

해결됨

C개발자를 위한 최소한의 C++

임시객체와 보이지않는 복사생성 과정 프로그램에서 - 제가 임의로 복사생성자 부분의 프로그램을 TestData(const TestData& rhs) { cout << "TestData(const TestData&)" << endl; } - 위와 같이 수정하고 - F11키로 디버깅 추적을 해보면 복사생성자가 분명 위의 생성자에서는 nData 를 접근하는 명령이 없는데도 아래 부분에 있는 private 😀 int nData = 0; 부분을 수행합니다. 왜 그런지 질문 드립니다. 아울러 제가 초기화 부분 "= 0" 를 없애 버리면 수행되지 않습니다.

  • c++
  • microsoft-windows
  • 객체지향
  • 디자인-패턴
내일은 한걸음 더 나아갈거야 댓글 1 좋아요 0 조회수 309

R-value 참조에 대해서 질문이 있습니다.

해결됨

C개발자를 위한 최소한의 C++

r-value 참조에 대해서 질문이 있습니다. (02-rvalueRef 예제 강의 기준 r-value 참조 (임시 객체와 유효범위) 8분) 코드를 포인터를 볼 수 있게 조금 수정했습니다. int testFunc(int param) { int result = param * 2; std::cout << &result << std::endl; return result; } int&& result = testFunc(10); std::cout << result << "pointer: " << &result << std::endl; 임시 객체의 주소를 지우지 않고 가져다 쓰는것이라 하셔서 testFunc 함수의 return 하는 result 의 포인터를 확인 후 받는 result의 포인터가 같은지를 확인해 보았습니다. print된 2개의 result의 포인터 값이 다른 것을 확인했습니다. 혹시 임시 객체라는 것이 함수의 return result 값을 또 다른 포인터로 옮긴 뒤 받기 때문에 return result와 다르게 되는건가요?

  • c++
  • microsoft-windows
  • 객체지향
  • 디자인-패턴
날다람쥐 댓글 2 좋아요 0 조회수 391

ThreadLocal 관련 질문입니다.

미해결

스프링 핵심 원리 - 고급편

traceId = traceId.createPreviousId(); // traceIdHolder.set(traceId.createPreviousId()); 두 코드의 결과에는 큰 차이가 없는 것 같은데, 굳이 traceIdHolder.set 을 사용해야 하는 이유가 있을까요??

  • spring
  • 디자인-패턴
최종민 댓글 1 좋아요 -2 조회수 320

Logtrace를 main함수에 등록하는 이유가 무엇인가요?

미해결

스프링 핵심 원리 - 고급편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] ProxyApplication 메인함수에 @bean을 사용해 @Bean public LogTrace logTrace(){ return new ThreadLocalLogTrace(); } 이런식으로 logTrace를 등록해주는데, InterfaceProxyConfig가 아니라 main함수에 따로 등록해주는 이유가 무엇인가요?

  • spring
  • 디자인-패턴
김영빈 댓글 2 좋아요 0 조회수 575

콘크리트프록시를 구현시 원본 구체를 파라메터로 받는이유

해결됨

스프링 핵심 원리 - 고급편

콘크리드프록시를 생성 할 때 기존 구체를 상속을 받고 오버라이딩 할 때 아래 예시와 같이 부모 메소드를 super를 통해서 호출이 가능한데요 public class OrderControllerConcreteProxy extends OrderControllerV2 { private final LogTrace logTrace; public OrderControllerConcreteProxy(OrderServiceV2 orderService, LogTrace logTrace) { super(orderService); this.logTrace = logTrace; } @Override public String request(String itemId) { TraceStatus status = null; try { status = logTrace.begin("OrderController.request()"); //target 호출 String result = super.request(itemId); logTrace.end(status); return result; } catch (Exception e) { logTrace.exception(status, e); throw e; } } @Override public String noLog() { return super.noLog(); } } 이렇게 super를 통해서 호출하지 않고 OrderControllerV2를 따로 new 해서 멤버 변수로 받고 그 원본 구현체를 호출하는 이유가 있을까요?

  • spring
  • 디자인-패턴
손영민 댓글 1 좋아요 3 조회수 327

execution 강의 듣다가 execution와 관련된건 아니지만 궁금증이 생겨 문의남깁니다.

미해결

스프링 핵심 원리 - 고급편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요 execution 강의 듣다가 execution와 관련된건 아니지만 궁금증이 생겨 문의남깁니다. AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut(); 강의에서는 pointcut을 위 코드와 같이 전역으로 선언하고 사용하고 있더라구요. pointcut을 전역으로 선언 후 테스트에서 사용하는데 beforeEach에서 초기화를 하지 않으면 다른 테스트에 영향이 갈 수 있지 않나? 생각이 들어서 , 한 번에 모든 테스트를 실행시켜 debug point를 찍으며 확인해봤는데요. 그런데 자동으로 테스트마다 pointcut이 초기화 되더라구요 이유가 있을까요??

  • spring
  • 디자인-패턴
헬프미 댓글 2 좋아요 0 조회수 438

스레드 / traceId 구분

미해결

스프링 핵심 원리 - 고급편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 스프링부트 자체에서 찍어주는 log를 보면 스레드ID로 이미 충분히 구분이 되고 있는데, 선생님께서 진행해주시는 강의에서는 traceId를 추가해서 개발자가 직접 구분을 또 해주는 이유가 뭔지 알 수 있을까요?

  • spring
  • 디자인-패턴
댓글 2 좋아요 1 조회수 425

템플릿 콜백 패턴 V5 실행 관련 질문드립니다.

해결됨

스프링 핵심 원리 - 고급편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 여기에 질문 내용을 남겨주세요. v5 코드를 작성했을 때, 아래와 같은 에러가 발생해서 Description: Parameter 0 of constructor in hello.advanced.app.v5.OrderRepositoryV5 required a bean of type 'hello.advanced.trace.callback.TraceTemplate' that could not be found. Action: Consider defining a bean of type 'hello.advanced.trace.callback.TraceTemplate' in your configuration. Process finished with exit code 1 TraceTemplate 클래스에 @Component 애노테이션을 추가했는데요. @Component @RequiredArgsConstructor public class TraceTemplate { private final LogTrace trace; public <T> T execute(String message, TraceCallback<T> callback) { TraceStatus status = null; try { status = trace.begin(message); T result = callback.call(); //로직 호출 trace.end(status); return result; } catch (Exception e) { trace.exception(status, e); throw e; } } } pdf에는 빈 등록과 관련된 부분이 없는 것 같은데, 빈 등록을 하지 않아도 실행이 되어야 하는 것인가요? 스프링 부트 3.1.7 버전 사용하고 있습니다. 감사합니다.

  • spring
  • 디자인-패턴
gooroom 댓글 1 좋아요 0 조회수 415

예외 클래스에서 catch 안의 데이터형이 참조자인 이유

해결됨

C개발자를 위한 최소한의 C++

안녕하세요. 강의 잘 보고 있습니다. 강의를 듣다가 궁금한 것이 생겨서 질문 드립니다. catch(MyException &exp) { // 생략 } 이 강의 예제에서 catch의 예외 데이터형에 클래스 참조자를 받도록 하였는데 만약 아래처럼 참조자를 사용하지 않으면 복사생성이 되나요? catch(MyException exp) { // 생략 }

  • c++
  • microsoft-windows
  • 객체지향
  • 디자인-패턴
김상현 댓글 1 좋아요 0 조회수 354

인기 태그

인프런 TOP Writers

주간 인기글