묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
인터셉터에서 에러발생 했을떄 로그
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)[질문 내용]여기에 질문 내용을 남겨주세요. 필터는 setDispatcherTypes 로 무슨 요청일때 필터가 작동하는지 설정을 할수있는데 인터셉터는 그게 안되서..만약에 에러페이지인데도 어떤 에러페이지는로그가 필요하고 어떤 에러페이지는 로그가 필요 없을땐 어떻게 처리해야 할까요 ?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradle-wrapper.properties' not found
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]start.spring.io에 들어가그림과 같이 프로젝트를 만든 후 인텔리 제이로 실행만 시켰는데 이런 오류가 뜹니다.gradle파일을 찾을수 없다인것 같은데..어떻게 해결하는지 모르겠어서 질문남깁니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
${{number}}에서 IntegerToStringConverter가 선택된 이유
[ConverterController.java] model.addAttribute("number", 10000); [converter-view.html] <span th:text="${{number}}" ></span>Model에서 "number"에 대응되는 10000은 int 타입입니다.이때, IntegerToStringConverter가 선택된 이유가 궁금한데요.ConversionService에서 int -> String으로 바꿔주는 컨버터가 없으니까,int ->Integer로 바꾼 후에, Integer -> String으로 바꿔주는 컨버터를 찾은 것인가요..?
-
미해결스프링 시큐리티 OAuth2
OAuth 2.0 Token Endpoinr Flow - 클라이언트 인증하기
강의 영상이 로딩이 안돼고 있습니다P
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
수업자료 제목이 자꾸 깨지는데요(window)
어떻게 해야하나요??다른 알집폴더도 이렇습니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
createParam에 관해 질문있습니다.
FrontController에서 request 받는 데이터를 createParam을 통해 하나의 Map 담아서 각 Controller에 전달합니다. 현재 프로젝트에서 이 Map 정보가 필요한 건 SaveController 뿐인 것 같은데 맞나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
강의를 듣는 방향에 대한 질문이 있습니다
아직 학생이고 스프링을 통한 개발을 공부하기 위해 강의를 듣고 있습니다. 스프링 부트로 개발을 하고 싶은데 지금 설명해주시는건 스프링 부트를 배우기 전에 기반을 다지는 거니까 너무 세세하게 문장 하나하나를 따지고 가는 것 보다는 스프링이 이러한 과정을 통해 현재 편리한 스프링 부트까지 오게 되었다는 것을 체득하기 위해 듣는 쪽으로 해도 후에 큰 문제가 없을지 궁금합니다.
-
미해결스프링 부트 웹 개발 입문 - 따라하며 배우기
기존테이블 컬럼 응용
안녕하세요. 공부하다가 궁금한점이 있어서 질문드립니다. cust_info 고객정보 테이블에서 cust_id, name, email 이렇게 3가지가 있을 때이것을 새로운 컬럼을 만들어서 넣고 싶습니다. e.g : cust_info_col = cust_Id + name + email 데이터를 담고 싶습니다. 즉, 기존테이블에서 하나의컬럼에 각 컬럼값을 넣어서 조회 뿐만 아니라 저장을 하고 싶은데이럴 경우에는 mapper에 select, update cust_info_col = cust_id || name || email as cust_info_col로 추가하면되나요? 감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
실행창 정렬 바꾸려고 하는데 어떻게 하나요?
이 실행창을이렇게 바꿔주고 싶습니다.구글에 검색했지만제가 키워드를 잘 못 적고 검색을 해서 그런지Ctrl + alt + l 만 나오더라구요..물어볼데가 없어서 여기에 물어봅니다..
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
어노테이션에 대해서
안녕하세요 강의 잘 듣고 있습니다!!강의를 듣다가 궁금해서 질문 남깁니다.Controller와 Service 연결할때와 Service와 Repository를 연결할때 사용하는 @Autowired는 사용하지 않아도 자동으로 연결이 되는건가요??Service클래스와 Repository클래스 위에 @Service, @Repository 어노테이션을 사용할떄도 있고 이번 강의처럼 사용하지 않을떄도 있는데 아직까지 차이점을 모르겠습니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
15강 질문 남깁니다!
안녕하세요 선생님!15강의 jdbcTemplate.query(readSql, (rs, rowNum) -> 0, request.getID()).isEmpty();위 문장에 대해서 질문이 있습니다!(rs, rowNum) -> 0 에서 rowNum이 무엇을 뜻하는 건지 알 수 있을까요?
-
미해결실전! 스프링 데이터 JPA
h2 데이터베이스 생성 오류 질문
localhost로 바꾸고 jdbc:h2:~/datajpa로 작성하고 해도 저렇게 뜨네요권한도 755로 변경했습니다어떻게 해야 할까요?
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
주문 내역 조회 관련하여 질문드립니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.다른건 다 잘 동작하는데 주문 내역 조회를 하면Whitelabel Error PageThis application has no configured error view, so you are seeing this as a fallback.Thu Feb 09 17:10:38 KST 2023[80f6a090-2] There was an unexpected error (type=Internal Server Error, status=500).An error happened during template parsing (template: "class path resource [templates/order/orderList.html]")org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/order/orderList.html]") at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:241) Suppressed: The stacktrace has been enhanced by Reactor, refer to additional information below: Error has been observed at the following site(s): checkpoint ⇢ Handler jpaBook.jpaShop.controller.OrderController#orderList(OrderSearch, Model) [DispatcherHandler] checkpoint ⇢ HTTP GET "/orders" [ExceptionHandlingWebHandler] Original Stack Trace: at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:241) at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone(AbstractMarkupTemplateParser.java:100) at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:666) at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1103) at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1077) at org.thymeleaf.spring6.SpringWebFluxTemplateEngine.lambda$createFullStream$0(SpringWebFluxTemplateEngine.java:198) at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:58) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:292) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:187) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:236) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:299) at reactor.core.publisher.MonoWhen$WhenCoordinator.signal(MonoWhen.java:211) at reactor.core.publisher.MonoWhen$WhenInner.onComplete(MonoWhen.java:427) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:299) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1840) at reactor.core.publisher.MonoCacheTime$CoordinatorSubscriber.signalCached(MonoCacheTime.java:337) at reactor.core.publisher.MonoCacheTime$CoordinatorSubscriber.onNext(MonoCacheTime.java:354) at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:200) at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) at reactor.core.publisher.MonoPublishOn$PublishOnSubscriber.run(MonoPublishOn.java:181) at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "item.member.name" (template: "order/orderList" - line 45, col 21) at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:393) at org.attoparser.MarkupParser.parse(MarkupParser.java:257) at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:230) at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone(AbstractMarkupTemplateParser.java:100) at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:666) at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1103) at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1077) at org.thymeleaf.spring6.SpringWebFluxTemplateEngine.lambda$createFullStream$0(SpringWebFluxTemplateEngine.java:198) at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:58) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:292) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:187) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:236) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:299) at reactor.core.publisher.MonoWhen$WhenCoordinator.signal(MonoWhen.java:211) at reactor.core.publisher.MonoWhen$WhenInner.onComplete(MonoWhen.java:427) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:299) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1840) at reactor.core.publisher.MonoCacheTime$CoordinatorSubscriber.signalCached(MonoCacheTime.java:337) at reactor.core.publisher.MonoCacheTime$CoordinatorSubscriber.onNext(MonoCacheTime.java:354) at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:200) at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) at reactor.core.publisher.MonoPublishOn$PublishOnSubscriber.run(MonoPublishOn.java:181) at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "item.member.name" (template: "order/orderList" - line 45, col 21) at org.thymeleaf.spring6.expression.SPELVariableExpressionEvaluator.evaluate(SPELVariableExpressionEvaluator.java:292) at org.thymeleaf.standard.expression.VariableExpression.executeVariableExpression(VariableExpression.java:166) at org.thymeleaf.standard.expression.SimpleExpression.executeSimple(SimpleExpression.java:66) at org.thymeleaf.standard.expression.Expression.execute(Expression.java:109) at org.thymeleaf.standard.expression.Expression.execute(Expression.java:138) at org.thymeleaf.standard.processor.AbstractStandardExpressionAttributeTagProcessor.doProcess(AbstractStandardExpressionAttributeTagProcessor.java:144) at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74) at org.thymeleaf.processor.element.AbstractElementTagProcessor.process(AbstractElementTagProcessor.java:95) at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process(ProcessorConfigurationUtils.java:633) at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1314) at org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205) at org.thymeleaf.engine.Model.process(Model.java:282) at org.thymeleaf.engine.Model.process(Model.java:290) at org.thymeleaf.engine.IteratedGatheringModelProcessable.processIterationModel(IteratedGatheringModelProcessable.java:368) at org.thymeleaf.engine.IteratedGatheringModelProcessable.process(IteratedGatheringModelProcessable.java:222) at org.thymeleaf.engine.ProcessorTemplateHandler.handleCloseElement(ProcessorTemplateHandler.java:1640) at org.thymeleaf.engine.TemplateHandlerAdapterMarkupHandler.handleCloseElementEnd(TemplateHandlerAdapterMarkupHandler.java:388) at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler$InlineMarkupAdapterPreProcessorHandler.handleCloseElementEnd(InlinedOutputExpressionMarkupHandler.java:322) at org.thymeleaf.standard.inline.OutputExpressionInlinePreProcessorHandler.handleCloseElementEnd(OutputExpressionInlinePreProcessorHandler.java:220) at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler.handleCloseElementEnd(InlinedOutputExpressionMarkupHandler.java:164) at org.attoparser.HtmlElement.handleCloseElementEnd(HtmlElement.java:169) at org.attoparser.HtmlMarkupHandler.handleCloseElementEnd(HtmlMarkupHandler.java:412) at org.attoparser.MarkupEventProcessorHandler.handleCloseElementEnd(MarkupEventProcessorHandler.java:473) at org.attoparser.ParsingElementMarkupUtil.parseCloseElement(ParsingElementMarkupUtil.java:201) at org.attoparser.MarkupParser.parseBuffer(MarkupParser.java:725) at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:301) ... 32 more Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1021E: A problem occurred whilst attempting to access the property 'name': 'Unable to access property 'name' through getter method' at org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:209) at org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:104) at org.springframework.expression.spel.ast.PropertyOrFieldReference$AccessorLValue.getValue(PropertyOrFieldReference.java:405) at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:92) at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:112) at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:338) at org.thymeleaf.spring6.expression.SPELVariableExpressionEvaluator.evaluate(SPELVariableExpressionEvaluator.java:265) ... 57 more Caused by: org.springframework.expression.AccessException: Unable to access property 'name' through getter method at org.springframework.expression.spel.support.ReflectivePropertyAccessor$OptimalPropertyAccessor.read(ReflectivePropertyAccessor.java:685) at org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:204) ... 63 more Caused by: java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:119) at java.base/java.lang.reflect.Method.invoke(Method.java:577) at org.springframework.expression.spel.support.ReflectivePropertyAccessor$OptimalPropertyAccessor.read(ReflectivePropertyAccessor.java:681) ... 64 more Caused by: org.hibernate.LazyInitializationException: could not initialize proxy [jpaBook.jpaShop.domain.Member#1] - no Session at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:164) at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:309) at org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor.intercept(ByteBuddyInterceptor.java:44) at org.hibernate.proxy.ProxyConfiguration$InterceptorDispatcher.intercept(ProxyConfiguration.java:102) at jpaBook.jpaShop.domain.Member$HibernateProxy$qF4ptgCa.getName(Unknown Source) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ... 66 more이러한 오류가 뜹니다.orderList.html 에서 item.member.name에 접근하려다가 오류가 나는 것 같은데 잘 모르겠어서 질문드립니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
인텔리제이 에러 Syntax error in SQL statement 도와주세요.
안녕하세요. 최태현 강사님. 설명도 친절하게 잘 해주셔서 재밌게 따라가고 있는데 실습하려고 실행시켜보니까 이런 에러가 뜹니다. 어떻게 해결해야하는지 잘 모르겠어요ㅠㅠㅠ도와주세요.
-
미해결스프링 핵심 원리 - 기본편
빈 이름으로 조회 테스트 관련 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]빈 이름으로 조회하는 test를 작성할 때 강사님께서 "memberService가 MemberServiceImpl의 인스턴스 이면 성공" 이라고 하셨는데1. AppConfig의 memberService 메소드가 실행되고 반환된 MemberServiceImpl이 memberService 객체에 저장됨그러므로 memberService가 MemberServiceImpl의 인스턴스임 성공의 의미가 맞을까요?아니면 AppConfig의 memberService 메소드가 MemberServiceImpl의 인스턴스라는 걸까요..? 이건 말이 안 된다고 생각해서요..
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
dto에서 strip 사용방법
RequestDto로 데이터를 받을 때 strip을 사용해서 공백제거를 하고싶은데Dto에서 setter를 사용해도 strip적용이 안되네요ㅜㅜ좋은방법알려주세요
-
미해결스프링 핵심 원리 - 기본편
statefulService 참조를 2개 선언하는 이유
싱글톤 방식의 문제점 코드에서, @Test void statefulServiceSingleton() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(TestConfig.class); StatefulService statefulService1 = ac.getBean("statefulService", StatefulService.class); StatefulService statefulService2 = ac.getBean("statefulService", StatefulService.class); // 스레드 A: A 사용자가 10000원 주문 statefulService1.order("userA", 10000); // 스레드 B: B 사용자가 20000원 주문 statefulService2.order("userB", 20000); // ThreadA: A 사용자 주문 금액 조회 int price = statefulService1.getPrice(); //ThreadA: 사용자A는 10000원을 기대했지만, 기대와 다르게 20000원 출력 System.out.println("price = " + price); assertThat(statefulService1.getPrice()).isEqualTo(20000); }다음과 같이 statefulService1, statefulService2 로 StatefulService의 참조 변수를 2개 선언해주는데 이렇게 선언해주신 이유가 뭔가요? 다른 스레드라도 어차피 같은 참조를 호출하게 되지 않나요..? 단순히 스레드의 개념을 보여주시기 위해 Service 참조변수를 여러개 선언하신 건가요?
-
해결됨토비의 스프링 부트 - 이해와 원리
Decorator 패턴을 소개해주신 이유
proxy 패턴은 빈 주입할 때 proxy로 만들어지기 때문에 이를 이해시키는 목적으로 설명해주셨는데 decorator 패턴은 어떤 목적으로 소개해주신 건지 궁금합니다.제가 중간에 캐치하지 못 한 건지 궁금해서 글을 남깁니다.
-
미해결스프링 핵심 원리 - 기본편
AppConfig 가 스프링 빈으로 등록되는 과정이 궁금합니다.
강의 내용을 보면 AppConfig 클래스의 경우 스프링 빈으로 등록이 될 때 임의의 클래스를 만들어서 AppConfig 를 한번 상속 받고 CGLIB 라이브러리를 이용해 바이트코드를 조작한 후 스프링 컨테이너에 빈으로 등록된다고 말씀하셨습니다.이전 강의에서는 스프링 컨테이너에 빈이 등록될 때 beandefinition이 먼저 생성되고 beandefinition에 등록된 메타정보를 바탕으로 빈을 생성하여 스프링 컨테이너에 등록된다고 말씀하셨었는데요.그렇다면 AppConfig 클래스의 경우에는beandefition 생성 -> 임의의 클래스 생성 후 상속 및 CGLIB 를 이용한 바이트코드 조작 ->스프링 컨테이너에 bean 등록과 같은 절차가 진행되는건가요??
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
프론트 컨트롤러 3,4에서 세션 사용시
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]ControllerV3 or ControllerV4에서 세션 접근 희망시 문제"mvc프레임워크 만들기의 프론트 컨트롤러 버전 3,4" 처럼, request와 response 객체를 각각의 컨트롤러에 넘겨주지 않고 paramMap으로 넘겨주는 식으로 개발하게 되면 컨트롤러 안에서 세션 접근이 안 될 것으로 생각되는데 맞을까요?이런 경우 :1. 각각의 컨트롤러 자체에서 세션에 접근할 일이 없게 구성한다 (예: 세션 정보 확인 후 해당되면 별도의 값을 넘겨주는 로직 등을 컨트롤러 밖에서 진행)2. paramMap을 string Obejct 형식으로 구성하여 세션도 함께 넘겨준다.2.1 paramMap과 더불어 session객체를 넘겨준다.3. 필요한 경우 굳이 paramMap을 넘겨주는 것이 아닌 기존의 request, response 를 넘기는 방식으로 구성한다.등의 대안이 떠오르는데..상황마다 다르겠지만 혹시 이런 경우 일반적으로 어떤 식으로 개발을 진행하는지, 아니면 처음부터 별개의 방법이 있는 것인지 궁금합니다.