묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 고급편
request 스코프 활용
스프링 핵심 원리 기본편에서 설명해주신 request 스코프를 사용하면 uuid가 유지되는 객체를 컨트롤러, 서비스, 레퍼지토리 로직에서 공유할 수 있을 것 같은데 이를 활용해서는 level 까지 포함한 로깅을 구현하긴 어려운걸까요? 지금 내용처럼 TraceId를 파라미터로 넘겨 받는 방식으로만 가능한건지 궁금합니다.
-
미해결스프링 핵심 원리 - 고급편
Callback 인터페이스를 기존의 Runnable 로 실행해도되나요?
문득 궁금한게 생겨 질문드립니다.강의에서는 Template Callback 패턴에서 Callback 인터페이스를 생성해서 사용하고있는데 아래코드처럼 기존 자바의 Runnable 인터페이스를 사용해서 콜백함수를 넘겨줘도 상관이없나요? 결과는 동일한것으로 보이는데 혹이 차이점이 있다면 무엇이 다른지 여쭤보고싶습니다
-
미해결스프링 핵심 원리 - 고급편
표현식 0..*의 의미가 뭔가요?
스프링 핵심 원리 고급편/ 섹션11 스프링 AOP-포인트컷/execution1의 6:10에 대한 질문입니다.파라미터에서 '..'은 '0..*'와 같다고 했는데, '0..*'의 의미가 뭔가요?'0..*'을 표현식의 파라미터 부분에 넣고 검증해보니 동작하지 않는 걸 보니 표현식은 아닌 것 같습니다.'0..*'에서 '0', '..', '*'가 각각 무엇을 의미하는 건지 잘 모르겠습니다.
-
미해결스프링 핵심 원리 - 고급편
프록시 적용시 @RequestMapping과 요청url 매핑
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]제가 알고 있는 짧은 지식으로는 스프링에서 요청url을 처리할 때 요청url과 @RequestMapping에 적힌 url이 매칭이 되는 메서드를 찾아 해당 메서드를 실행시켜 주는 것으로 알고 있습니다. 이때는 실제 컨트롤러가 직접 호출되어 요청 url과 @RequestMapping이 매핑이 되는 것으로 이해하고 있습니다. 그런데 프록시를 적용할 경우 프록시가 먼저 호출되고 프록시에서 컨트롤러를 호출하게 되는데, 빈으로 등록되지 않은 컨트롤러의 @RequestMapping과 요청url 매핑을 스프링에서 자동으로 처리해주는 것인가요?그렇다면 어떤 원리로 이뤄지는지 알려주시면 감사하겠습니다.
-
해결됨스프링 핵심 원리 - 고급편
protected() 접근제어자
안녕하세요.AbstractTemplate 클래스의 call() 함수의 접근제어자를 protected 로 한 이유가 있을까요?private - 상속을 받지 못하므로 사용Xcall()은 execute() 가 호출하는 내부함수이므로 최대한 접근제어를 줄이면 좋으니까 protected() 사용한 것이 맞을까요?default와 public 로 굳이 외부로 노출할 필요없다. 이런 것 맞을까요? 감사합니다.
-
해결됨스프링 핵심 원리 - 고급편
remove()
https://www.inflearn.com/questions/944736 의 질문을 읽어봤습니다."remove()를 하게 되면 A의 데이터가 사라지는 것은 아니고 ThreadLocal 의 해당 변수의 데이터가 사라진다? "가 이해가 되지 않네요. 다음 강의인 정리의 마지막 부분에서 영한님이 말씀하시길 사용자A의 전용 보관소의 데이터를 꼭 지우라고 하셨거든요. 그리고 사용자A가 remove()를 했다면, 사용자B는 조회시 애초에 아무것도 저장하지 않았으므로 어떤 값도 못 얻는 것 맞을까요? (심지어 thread-A 쓰레드를 할당받더라두요) 감사합니다.
-
해결됨코딩으로 학습하는 GoF의 디자인 패턴
싱글톤 (Singleton) 패턴 구현 방법 3 - 2번 퀴즈에 대해 질문이 있습니다.
안녕하세요 백기선님, 강의 들으면서 많이 배우고 있습니다.싱글톤 (Singleton) 패턴 구현 방법 3- 2. 만약에 생성자에서 checked 예외를 던진다면 이 코드를 어떻게 변경해야 할까요?위 퀴즈에 대해 질문이 하나 있습니다.static 필드의 초기화 혹은 static block에서 exception이 발생하면 ExceptionInInitializerError가 발생하는 것으로 알고 있습니다.인터넷에서 많은 사람들이 위 퀴즈에 대해 '생성자에서, 혹은 static block에서 try/catch하여 checked exception을 RuntimeException으로 변환해준다' 라고 설명을 하는데, static eager initialization를 사용하는 구조에서는 unckecked, checked 등 exception의 종류와 관계 없이 모두 ExceptionInInitializerError 이 발생하지 않나요?그리고 static eager initialization 과정에서 exception이 발생하여 싱글턴 인스턴스가 null이 되어버리는 경우, Spring에서의 BeanCreationException과 같이 서버가 뜨면 안되는 상황이 아닐까 생각이 됩니다.제가 잘못 파악하고 있거나 놓친 부분이 있다면 가르침 부탁드립니다.
-
미해결코딩으로 학습하는 GoF의 디자인 패턴
안녕하세요, 강의 순서 질문드립니다.
안녕하세요.헤드퍼스트 디자인 패턴 책을 읽으면서 백기선님 강의를 같이 들으려고 하는데요!혹시 강의 순서대로 수강하는걸 권장하시는지 상관없는지 질문드립니다.
-
미해결스프링 핵심 원리 - 고급편
@Around 에서 joinPoint.proceed()
@Around 설명 부분에 joinPoint.proceed() 호출 여부를 선택할 수 있다고 하셨는데 코드의 문제점을 설명해주실 떄 그런데 @Around 는 항상 joinPoint.proceed() 를 호출해야 한다. 라고 자료에 써져있는데.. 호출 여부를 선택할 수 있는거 아닌가요?!
-
미해결JSP WEB MVC Model2 Programming(중급 과정)
강의가 완강이안된것같은데 미완된부분 다른강사님이라도 촬영해주실수없나요?
강의구성을 보니까 게시판 crud까지만 강의하고 해당강사님께서 계약만료로 하차하신것같은데... 너무아쉽습니다. 많이 쓰이는게 model2방식인데 중간에 강의흐름이 끊겨서... 혹시 소프트캠퍼스의 다른강사님꼐서 원래 예정했던 커리큐럼중 빠진 뒷부분을 완성해주실수없으신지?
-
미해결은종쌤과 자바로 디자인 패턴 쉽게 시작하기
Strategy 패턴 예시 질문드립니다
Strategy 패턴 예시에서showGradeInfo 의 gradeEvaluation을 Factory로 구현하면 Factory 패턴 인가요 Strategy패턴인가요..?
-
해결됨스프링 핵심 원리 - 고급편
ThreadLocal.remove()
사용자A 가 thread-A 로 thread-A 전용 보관소에 사용자A 데이터를 저장했다가 ThreadLocal.remove() 를 하게 되면 thread-A 전용 보관소에 저장된 사용자A 데이터도 사라지게 되는 것 아닌가요..??
-
미해결스프링 핵심 원리 - 고급편
강의자료 문의
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요, 영한님 강의를 수강 하고 있는 수강생 입니다. 다름이 아니라, 블로그 작성에 있어 영한님 강의자료 PDF 이미지를 사용해도 괜찮을까요?(PDF의 Diagram이 인용 가능한 라이센스인지 확인하고자 문의 드립니다!)
-
해결됨스프링 핵심 원리 - 고급편
try / catch 문 질문
1. 강의 내용과 관련된 질문인가요? 아니오2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]김영한님은 intellij에서 try / catch 문을 생성하면 catch 문 안에 자동으로 e.printStackTrace(); 가 나오는데, 저는 throw new Exception(e); 이 나옵니다.Configure Live Templates를 확인해보았지만, try catch문에 대한 설정을 찾지 못했습니다. 어떻게 하면 김영한 님처럼 catch문 안에 자동 생성되는 내용을 throw가 아닌, printStackTrace로 변경할 수 있는지 궁금합니다.
-
미해결스프링 핵심 원리 - 고급편
V2 ConcreteProxyController 빈 중복 에러 (SpringBoot V3)
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]안녕하세요, 영한님! 먼저 이렇게 좋은 강의를 들을 수 있게 되어서 너무 기쁘고 감사드립니다.먼저 저는 SpringBoot 3.0.5 버전 사용중입니다.그렇기 때문에 어쩔 수 없이 @RequestMapping으론 컴포넌트 스캔 대상이 되지 않기 때문에 V2 컨트롤러에는 @RestController가 붙어있습니다.구체 클래스 기반 프록시 V2에 적용할 때, 프록시 컨트롤러를 빈으로 등록하려고 하니 아래처럼 빈이 중복으로 등록된다고 오류가 발생하였습니다.*************************** APPLICATION FAILED TO START *************************** Description: The bean 'orderControllerV2', defined in class path resource [me/iseunghan/hello/proxy/app/v2/concrete_proxy/ConcreteProxyConfig.class], could not be registered. A bean with that name has already been defined in file [/Users/iseunghan/workspaces/study/lecture-spring-advanced/proxy/build/classes/java/main/me/iseunghan/hello/proxy/app/v2/OrderControllerV2.class] and overriding is disabled. Action: Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true Process finished with exit code 1 그래서 로그에 친절하게 나와있는대로 application.yaml에 아래 설정을 추가하니 정상적으로 실행 및 테스트가 되었습니다.application.yamlspring.main.allow-bean-definition-overriding: true혹시 이와 같은 방법 이외에는 다른 방법이 없을지 여쭤보고 싶습니다..! 감사합니다.
-
미해결스프링 핵심 원리 - 고급편
OrderControllerV1 인터페이스에서 @RequestParam 작성 관련 질문
OrderControllerV1 인터페이스에서 @RequestParam을 생략하면 안 되고 작성해줘야 한다고 하셨는데, '@RequestParam("itemId")'과 같이 "itemId"라는 속성도 생략하면 안 되는 것인가요? @RequestParam이 아닌 @RequestParam("itemId")로 적어주어야 하는 것인가요?
-
미해결스프링 핵심 원리 - 고급편
쓰레드, 쓰레드 전용 보관소 관련 질문
질문1. Thread-A가 살아있을 때까지 Thread-A 전용 보관소도 살아있는 것인가요? 그렇다면 쓰레드 풀을 사용하는 경우, Thread-A와 함께 Thread-A 전용 보관소도 영구적으로 살아있는 것인가요?질문2. ThreadLocal.remove()하는 것은 쓰레드 전용 보관소를 제거하는 것이 아니라, 보관소에 존재하는 값을 제거하는 것이 맞을까요?질문3. ThreadLocal<TraceId>에서 TraceId는 쓰레드 전용 보관소에 저장된 데이터의 타입이 TraceId라는 뜻인가요..?
-
해결됨스프링 핵심 원리 - 고급편
수업 방식 질문입니다.
테스트에 @Test 가 달린 코드만 작성하는게 아니라 테스트에 사용되는 다른 개발 코드들도 테스트 폴더 밑에 작성하고 계신데 이런걸 TDD로 봐도 될까요?
-
미해결스프링 핵심 원리 - 고급편
try문 안에 trace.begin() 넣기
OrderControllerV1.java @GetMapping("/v1/request") public String request(@RequestParam String itemId) { TraceStatus status = trace.begin("OrderController.request()"); //시작 로그 출력 try { orderService.orderItem(itemId); trace.end(status); //종료 로그 출력1 return "ok"; } catch (IllegalStateException e) { trace.exception(status, e); //종료 로그 출력2 throw e; } }trace.begin() 코드에서도 예외가 발생할 수 있으니 try문에 넣어야 한다고 하셨는데, 어떤 부분에서 예외가 발생하나요..?? 혹시 log.info()에서 예외가 발생하나요??
-
미해결스프링 핵심 원리 - 고급편
api 결과에 대한 질문
restapi로 댓글 crud를 할때에 대한 질문입니다. (crud 모두 restapi로 구현하였습니다.) create, update, delete에 대한 결과값으로 return new ResponseEntity<>(200); 을 하게 만들었습니다. 그리고 성공하면 클라이언트가 댓글리스트를 가져오는 api를 요청하도록 만들었습니다. 이렇게 만드는 게 맞는 건가요? ResponseEntity를 리턴하는 컨트롤러의 경우 @RestController말고 @Controller를 달아도 되던데, @RestController로 명시적으로 해주는 게 맞을가요? 자신이 쓴 댓글에는 수정 및 삭제를 보이게 하고 싶습니다. 다양한 방식이 있던데 일반적으로는 어떤 방식으로 하는지 궁금합니다.