묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
init(B Builder), configure(B builder) 에 대하여 질문 드립니다.
안녕하세요, 수업 내용을 보면 6:00 시간대의 수업자료를 보면 SecurityConfigurer에서 init(B Builder), configure(B builder)을 호출한다고 나와있습니다. 하지만, 실제 소스코드를 보면 아래와 같은데, 파라미터를 보면 Builder 타입이 아닌, 파라미터를 넘기지 않는 것을 확인할 수 있습니다.@Override protected final O doBuild() throws Exception { synchronized (this.configurers) { this.buildState = BuildState.INITIALIZING; beforeInit(); init(); this.buildState = BuildState.CONFIGURING; beforeConfigure(); configure(); this.buildState = BuildState.BUILDING; O result = performBuild(); this.buildState = BuildState.BUILT; return result; } }확인 부탁드려도 될까요?감사드립니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
데이터베이스 테이블 생성 안됨
로그는 잘 나가는 것 같은데 데이터베이스를 확인해보면 테이블이랑 데이터가 안 들어가는 것 같습니다 ㅠ 그리고 ddl-auto 모드도 none 으로 바꿔봐도 계속 같은 로그가 나옵니다.(테이블 생성 및 drop) 로그 첨부할게요.> Task :compileJava UP-TO-DATE > Task :processResources UP-TO-DATE > Task :classes UP-TO-DATE > Task :compileTestJava UP-TO-DATE > Task :processTestResources UP-TO-DATE > Task :testClasses UP-TO-DATE 19:41:14.516 [Test worker] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils -- Could not detect default configuration classes for test class [jpabook.jpashop.MemberRepositoryTest]: MemberRepositoryTest does not declare any static, non-private, non-final, nested classes annotated with @Configuration. 19:41:14.568 [Test worker] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper -- Found @SpringBootConfiguration jpabook.jpashop.JpashopApplication for test class jpabook.jpashop.MemberRepositoryTest 19:41:14.668 [Test worker] INFO org.springframework.boot.devtools.restart.RestartApplicationListener -- Restart disabled due to context in which it is running . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.4.0) 2025-06-16T19:41:14.814+09:00 INFO 56122 --- [ Test worker] jpabook.jpashop.MemberRepositoryTest : Starting MemberRepositoryTest using Java 20.0.1 with PID 56122 (started by sungwoo in /Users/sungwoo/Documents/dev/study/online-lecture/inflearn/jpa/2.jpa-application) 2025-06-16T19:41:14.815+09:00 INFO 56122 --- [ Test worker] jpabook.jpashop.MemberRepositoryTest : No active profile set, falling back to 1 default profile: "default" 2025-06-16T19:41:15.139+09:00 INFO 56122 --- [ Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. 2025-06-16T19:41:15.150+09:00 INFO 56122 --- [ Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 6 ms. Found 0 JPA repository interfaces. 2025-06-16T19:41:15.337+09:00 INFO 56122 --- [ Test worker] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2025-06-16T19:41:15.435+09:00 INFO 56122 --- [ Test worker] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection conn0: url=jdbc:h2:mem:cb23765c-56b9-40bc-ba72-8f1435f049ba user=SA 2025-06-16T19:41:15.436+09:00 INFO 56122 --- [ Test worker] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. 2025-06-16T19:41:15.470+09:00 INFO 56122 --- [ Test worker] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default] 2025-06-16T19:41:15.500+09:00 INFO 56122 --- [ Test worker] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.6.2.Final 2025-06-16T19:41:15.517+09:00 INFO 56122 --- [ Test worker] o.h.c.internal.RegionFactoryInitiator : HHH000026: Second-level cache disabled 2025-06-16T19:41:15.661+09:00 INFO 56122 --- [ Test worker] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer 2025-06-16T19:41:15.706+09:00 INFO 56122 --- [ Test worker] org.hibernate.orm.connections.pooling : HHH10001005: Database info: Database JDBC URL [Connecting through datasource 'HikariDataSource (HikariPool-1)'] Database driver: undefined/unknown Database version: 2.3.232 Autocommit mode: undefined/unknown Isolation level: undefined/unknown Minimum pool size: undefined/unknown Maximum pool size: undefined/unknown 2025-06-16T19:41:16.066+09:00 DEBUG 56122 --- [ Test worker] org.hibernate.SQL : create global temporary table HTE_member(rn_ integer not null, id bigint, username varchar(255), primary key (rn_)) TRANSACTIONAL 2025-06-16T19:41:16.126+09:00 INFO 56122 --- [ Test worker] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) 2025-06-16T19:41:16.132+09:00 DEBUG 56122 --- [ Test worker] org.hibernate.SQL : drop table if exists member cascade 2025-06-16T19:41:16.133+09:00 DEBUG 56122 --- [ Test worker] org.hibernate.SQL : drop sequence if exists member_seq 2025-06-16T19:41:16.135+09:00 DEBUG 56122 --- [ Test worker] org.hibernate.SQL : create sequence member_seq start with 1 increment by 50 2025-06-16T19:41:16.137+09:00 DEBUG 56122 --- [ Test worker] org.hibernate.SQL : create table member (id bigint not null, username varchar(255), primary key (id)) 2025-06-16T19:41:16.140+09:00 INFO 56122 --- [ Test worker] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' 2025-06-16T19:41:16.239+09:00 WARN 56122 --- [ Test worker] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning 2025-06-16T19:41:16.368+09:00 WARN 56122 --- [ Test worker] ion$DefaultTemplateResolverConfiguration : Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false) 2025-06-16T19:41:16.431+09:00 INFO 56122 --- [ Test worker] jpabook.jpashop.MemberRepositoryTest : Started MemberRepositoryTest in 1.764 seconds (process running for 2.307) 2025-06-16T19:41:16.749+09:00 DEBUG 56122 --- [ Test worker] org.hibernate.SQL : select next value for member_seq 2025-06-16T19:41:16.808+09:00 DEBUG 56122 --- [ Test worker] org.hibernate.SQL : insert into member (username,id) values (?,?) Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 2025-06-16T19:41:16.819+09:00 INFO 56122 --- [ionShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default' 2025-06-16T19:41:16.819+09:00 DEBUG 56122 --- [ionShutdownHook] org.hibernate.SQL : drop table if exists member cascade 2025-06-16T19:41:16.820+09:00 DEBUG 56122 --- [ionShutdownHook] org.hibernate.SQL : drop sequence if exists member_seq 2025-06-16T19:41:16.821+09:00 INFO 56122 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... 2025-06-16T19:41:16.822+09:00 INFO 56122 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed. > Task :test [Incubating] Problems report is available at: file:///Users/sungwoo/Documents/dev/study/online-lecture/inflearn/jpa/2.jpa-application/build/reports/problems/problems-report.html Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. For more on this, please refer to https://docs.gradle.org/8.11.1/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. BUILD SUCCESSFUL in 3s 5 actionable tasks: 1 executed, 4 up-to-date 오후 7:41:16: Execution finished ':test --tests "jpabook.jpashop.MemberRepositoryTest"'.
-
미해결
개발 강의 추천 부탁드립니다.
[3줄 요약]비전공자로 10년 전 JSP, PHP 기반 개발 경험이 있으며, 현재는 헤드헌터로 활동 중입니다.React + Java(Spring) + MongoDB 기반으로 헤드헌터 업무에 활용할 수 있는 웹/모바일 플랫폼을 직접 개발하고자 합니다.기술 공백과 최신 스택(Git 등) 부족으로 학습 방향 및 인프런/부트캠프 강의 추천이 필요합니다. [본문]안녕하세요.현재 40세, 비전공자(경영학과)이며, 현재는 헤드헌터로 활동 중입니다.12년 전 독학과 오프라인 Java 강의(6개월) 수강 후 JSP 기반 웹 개발을 약 6개월,또한 웹호스팅 업체에서 리눅스/윈도우 서버 운영과 PHP 유지보수를 약 1년간 경험했습니다.퇴사 후 HTML5, CSS3, PHP, MySQL 기반으로 1인 창업 프로젝트(플랫폼)를 개발 경험도 있으나,프론트엔드 실무 한계로 인해 학원과 인강으로 보완했지만 실무 수준에 도달하기는 어려웠습니다.이후 창업을 접고 현재는 헤드헌터 일을 8년째 하고 있습니다. 최근 AI 도구(GPT, CURSOR 등)로 인해 1인 개발의 장벽이 많이 낮아졌다고 느꼈고,사이드프로젝트로 다시 한번 플랫폼을 만들어보자는 생각에 도전하고 있습니다. 우선 서버는 아마존이나 네이버 등 1년 동안 무료로 제공하는 클라우드를 생각하고 있습니다. [프로젝트 방향]목표: 헤드헌터 업무에 활용 가능한 게시판 중심의 웹 & 모바일 플랫폼프론트엔드: React백엔드: Java(Spring), 일부 Python (데이터 분석용)DB: MongoDB (NoSQL 기반)기능: 기능: 엑셀 데이터 업로드/필터링, 검색, 태그, 동료와 공유 및 협업플랫폼: PC 웹 + Android 우선 대응 [현재 느끼는 기술적 한계]10년 이상의 개발 공백 → 신규 기술 감각이 거의 없음Git, 협업 툴, 배포 등 실무적인 스택을 제대로 써본 적 없음과거 창업 경험 덕에 HTML/CSS/JS 기본 흐름은 이해주당 약 20시간 정도 학습 및 개발 시간 확보 가능 [현재 계획 중인 학습 우선순위]모든 강의를 다 듣기엔 시간 제약이 있으므로, 아래와 같은 것부터 선택적으로 수강하려고 합니다.React 중심 프론트엔드 학습 – 프로젝트 기반으로 실습 위주Spring 백엔드 학습 – REST API + MongoDB 연동 포함Git, 배포, 협업 도구 등 실무 환경 익히기Python 기초 + 데이터 분석 활용 (선택적)(Node.js나 웹 자동화는 현재는 후순위입니다) 시간상 모든 강의를 다 들을 수는 없어, 섹션별로 필요한 내용만 골라 수강할 수 있는 방식이 있는지 궁금합니다.또한 혼자서 진행하는 프로젝트이기에, 코드 리뷰나 피드백 커뮤니티가 병행되는 부트캠프가 있다면 병행하고 싶습니다.비슷한 경험을 하신 분이나, 인프런/코드잇 등에서 유익했던 강의나 커뮤니티가 있다면 조언 부탁드립니다 감사합니다. #사이드프로젝트 #React #JavaSpring #MongoDB #프론트엔드 #백엔드 #풀스택도전#개발공백극복 #IT학습로드맵 #인프런강의추천 #코드잇추천
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@ModelAttribute와 model.addAttribute() 이름 차이.
강의 9분 20초 경부터 설명하는 pdf 내용모델에 데이터를 담을 때는 이름이 필요하다. 이름은 @ModelAttribute에 지정한 name(value) 속성을 사용한다. 만약 다음과 같이 @ModelAttribute의 이름을 다르게 지정하면 다른 이름으로 모델에 포함된다.@ModelAttribute("hello") Item item -> 이름을 'hello'로 지정model.addAttribute("hello", item); -> 모델에 'heelo' 이름으로 저장 이 설명에 대해서 궁금한 점이있는데요. 만약 다음과 같이 @ModelAttribute의 이름을 다르게 지정하면 다른 이름으로 모델에 포함된다. 이 부분이 이해가 잘 가지 않습니다. 위 두 코드 모두 모델의 키(이름?)이 결국 'hello'로 사용되고 뷰에서 또한 hello로 데이터를 꺼낼 수 있는 것 아닌가요? 그런데다음과 같이 @ModelAttribute 이름을 다르게 지정 이라는 부분 때문에 헷갈립니다.. 어느 부분이 다른건지 모르겠고 제가 어느 것을 놓치고 있는지 잘못이해하고있는지 잘모르겠습니다. 둘다 hello로 모델에 저장되는 것은 매한가지같은데 어느 부분이 차이점이라는 것인가요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
updateMemberResponse 반환 값
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. @PutMapping("/api/v2/members/{id}") public updateMemberResponse updateMemberV2( @PathVariable("id") Long id, @RequestBody @Valid updateMemberRequest request) { memberService.update(id, request.getName(), request.getAddress()); // Member findMember = memberService.findOne(id); return new updateMemberResponse(id, request.getName(), request.getAddress()); }return에 requst의 값을 넣어서 반환 받는 건 안 좋은 방법일까요?findMember로 꺼내서 return 하면 request로 바로 하는 것 보다 어떤 이점이 있는건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradlew 빌드 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.계속 "내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다." 라고 뜹니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
중복회원예외()에서 오류 발생
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]중복 회원 예외()에서 오류가 자꾸 발생합니다. @Test public void 중복_회원_예외() throws Exception { //Given Member member1 = new Member(); member1.setName("spring"); Member member2 = new Member(); member2.setName("spring"); //When memberService.join(member1); IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2)); //Then assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다."); } }Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appendedjava.lang.IllegalStateException: 이미 존재하는 회원입니다. at hello.hello_spring.service.MemberService.lambda$validateDuplicateMember$0(MemberService.java:39) at java.base/java.util.Optional.ifPresent(Optional.java:178) at hello.hello_spring.service.MemberService.validateDuplicateMember(MemberService.java:38) at hello.hello_spring.service.MemberService.join(MemberService.java:31) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) at hello.hello_spring.service.MemberService$$SpringCGLIB$$0.join(<generated>) at hello.hello_spring.service.MemberServiceIntegrationTest.중복_회원_예외(MemberServiceIntegrationTest.java:45) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
서블릿 생성과 등록 차이
이번 강의에서 @ServletComponentScan 에 대한 설명을 들으면서 궁금한 점이 생겼는데요, 서블릿 생성과 등록 차이에 대한 질문좀 드리겠습니다.ServletApplication이 실행되고 @ServletComponentScan 이 붙어있으면 현재 내 패키지를 포함해서 하위 패키지를 뒤져서 서블릿을 모두 찾아 자동으로 서블릿을 등록해준다고 하셨습니다.아마 서블릿 컨테이너에 등록하는 것이겠지요? (틀렸다면 말씀해주세요)그런데 여기서 이 등록이라는 것이 서블릿 객체로 생성해서 등록하는 것인지 아니면 객체가 아닌 단순히 스프링 빈처럼 빈이름이라던가 해당 서블릿을 타입이라던가 그런것을 식별 정보만을 사용해서 등록한다는 것인지 궁금합니다. 왜 이 부분을 질문 드리냐면 이전 강의에서 서블릿 컨테이너의 역할중에 서블릿 객체를 생성하는 역할이 있다고 강의 하셨는데요. 서블릿이 자동 등록될 때 만약에 객체를 생성해서 객체가 등록된다면 @ServletComponentScan 은 단순히 스캔 및 서블릿으로 등록 판별만하고 서블릿 객체를 생성하는건 서블릿 컨테이너의 역할이 될 것 같은데 만약에 객체를 생성해서 등록하는게 아닌 스프링 빈처럼 @ServletComponentScan 이 이름, 타입같은 정보로만 등록하는 것이라면서블릿 컨테이너의 서블릿 객체 생성 역할은 언제 일어나고 언제 사용되는건지 잘 모르겠습니다.@WebServlet에서 알맞은 url 매핑 요청이 들어왔을 때 그제서야 서블릿 컨테이너에 있는 정보를 바탕으로 서블릿 객체를 생성하고 request와 response를 받는 식인가요? 결국 제가 궁금한건 @ServletComponentScan 에서 말하는 자동 등록이 스프링 컨테이너가 하는 객체 생성까지 포함인지, 아니면 별도의 정보로 등록하고 컨테이너가 하는 객체 생성도 별개의 것인지 궁금합니다. 감사합니다!
-
미해결Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 1부
subscription signal 에 upstream 으로 이동하는 순서
안녕하세요, 좋은 강의 감사합니다.쉬운 예제코드와 그림설명 덕분에 Java 8 stream API, Spring Batch ItemStream 과 대조해가며 쑥쑥 이해하고 있습니다. ContextAPIExmaple02 에서 궁금한 점이 있습니다.contextWrite() 호출 순서에 의문이 생겨 순서를 변경해보니, 무조건 아래에서 위로 진행되는 걸로 확인되었습니다. 이 규칙이 적용되는 원리가 궁금합니다. 현재 추측하기로는 "subscription signal 에 따라 upstream 으로 이동하는 operator 들은 모두 아래에서 위 순서대로 이동(반전)된다." 인 것 같은데, 확신이 생기지 않습니다.참고 할 수 있는 자료나 내부 클래스가 있을까요?
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
RedisTemplate<String, String>
RedisTemplate<String, String> 빈으로 등록하지 않고 생성자 주입으로 사용하던데 빈으로 등록하지 않아도 스프링 내에서 자동으로 빈 등록해주나요?
-
해결됨실무 환경 그대로 주문게시판 만들기 웹개발 기초 마스터
404 톰캣오류
톰캣 404 오류떄매 미치겠습니다. 해당 부분대로 따라하고 서버 빌드해도 자꾸 안되네요. 티스토리 싹다 뒤져도 안고쳐져서 원인파악을 계속못하고있습니다.path경로 다 바꾸고 했는데도안되네요.ㅠㅠ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
핸들러 매핑, 어댑터 제대로 이해했나요??
이전에 저희가 구현했을때는 Map에서 그냥 url일치하는 것을 가져오다보니 이해가 쉬웠는데 핸들러 매핑이라는 개념으로 바뀌다 보니 꽤나 헷갈리는 부분이 있어서 질문드립니다. 핸들러 매핑과 어댑터 제가 제대로 이해하고 있는게 맞는지 꼭 확인좀 해주시면 감사하겠습니다.추측이 좀 있습니다...먼저 컨트롤러를 찾기 전에 어떤 핸들러 매핑 사용해야하는지 찾고 그 다음 이 핸들러 매핑을 사용해서 알맞은 컨트롤러를 찾는게 맞는다.이번 강의에선 먼저 우선순위가 높은 RequestMappingHandlerMapping이 @RequestMapping이 있는지 확인한다. 없으므로 다음 우선순위로 넘어간다. BeanNameUrlHandlerMapping이 컨트롤러들을 확인해서 일치하는 스프링 빈 이름이 있는지 찾는다. 일치하는 스프링 빈이 있으므로 핸들러로 꺼낸다. 꺼낸 핸들러를 처리하기 위한 어댑터를 찾는다. 앞서 직접 구현한 V5에서 처럼 어댑터를 하나씩 꺼내어 adapter.supports()하여 알맞은 어댑터 인지 찾는다.RequestMappingHandlerAdapter 와 HttpRequestHandlerAdapter 는 아니므로 넘어가고 SimpleControllerHandlerAdapter이 처리 가능한 어댑터로 반환된다.여기까지입니다. 제가 특히나 궁금한 것은 핸들러 매핑입니다. 제가 적은 핸들러 매핑 방식은 핸들러 매핑이 먼저 우선순위대로 하나씩 선택되고 선택된 핸들러 매핑이 다시 컨트롤러들을 검사해서 알맞은 컨트롤러를 찾는 식으로 적어놨는데요.즉, 먼저 RequestMappingHandlerMapping 이 선택되고 @ReqiestMapping인 컨트롤러가 있는지 찾고 없으면 다음 BeanNameUrlHandlerMapping 이 선택되고 매핑 방식인 빈 이름으로 컨트롤러들을 검사해 있으면 반환.어댑터는 위에 적은 그대로입니다.이런 식으로 이해했는데 제대로 이해했을까요? 혹 틀린부분이나 잘못 이해하고 있다면 꼭 지적해주시면 감사하겠습니다. 감사합니다...!!
-
해결됨옆집 개발자와 같이 진짜 이해하며 만들어보는 첫 Spring Boot 프로젝트
수업 자료는 어디에 있나요?
안녕하세요,수업자료 pdf는 어디에 있나요?
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
외부 API 테스트
kill9형 오매불망 테스트만 기다리고있었는데 업로드 되서 너무 좋다. 근데 외부 API 호출이 Step 안에 있는 경우 어떻게 테스트하면 좋을지 알려 줄 수 있을까?호출이 가능한 상황과 호출이 불가능한 상황 2가지 경우에 대해서 설명부탁해
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
스프링 수동 빈 등록에서 인코딩 관련 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 강의에서 MessageSource 인터페이스의 구현체인 ResourceBundleMessageSource를 스프링 빈으로 등록해서 사용한다라고 하셨는데,구현체의 setDefaultEncoding()메서드를UTF-8로 강제 할 수 있는지 궁금합니다. 찾아본 내용 중에 ResourceBundleMessageSource 클래스의 setDefaultEncoding 메서드는 적용되지 않는다는 내용을 보고 질문드립니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
findOrders 문제
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]orderService.findOrders(orderSearch) 가 작동하지 않습니다.오류를 고쳐보다 join에 무언가 문제가 있다는 걸 알아냈습니다.em.createQuery("select o from Order o", Order.class).getResultList()는 정상적으로 작동하나 em.createQuery("select o from Order o join o.member m", Order.class).getResultList() 는 반환 값이 없습니다. 조인을 하게 되면 문제가 발생하는데 어떻게 해결해야 할까요.
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
테스트 챕터는 언제 올라오는것인가
6월 8일부터 기다리고 있어 형 얼른 마지막 섹션을 줘..현기증..나..
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
jsp를 사용하면 어디서 응답코드를 작성하나요?
아래 똑같은 질문글을 올렸는데 AI 답변은 jps에서 응답코드를 작성하지 않는다고 합니다.제가 궁금한것은 이전에는 servlet에서 저희가 직접 응답코드를 작성했는데, 이제는 jps로 넘겨주고 끝이잖아요?그런데 현재 강의에서 6분 30초경을 보면 jps에서 응답을 작성한다고 하셨는데 아래 질문글의 Ai 답변은 jsp가 응답코드를 작성하지 않는다고 합니다.그렇다면 서블릿에서 jps로 넘어간 후에 응답은 어디서 작성되나요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
홈 화면 질문(캐시 문제에 대해서)
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 궁금증이 생겨서 질문을 드립니다.home.html을 만들고 나서 localHost:8080을 호출 할때, 크롬에서 index.html 페이지가 계속 떠서 코드에 문제가 없는지 확인해 보았습니다.그래서 pdf파일에 있는 코드들도 복사 붙여놓기 해보고, 빠진것들이 없나 확인도 해보았지만 문제를 해결할수 없어서, 질문들을 확인해보니 캐시에 대한 답변이 있어서 다른 인터넷으로(edge) localHost:8080 을 치니 home이 잘 표시되더라고요… 그리고 나서 크롬 설정에 들어가서 캐시를 지우니까 홈 화면이 나오는 것을 확인할 수 있었는데요.(그전까지는 계속 index.html 뜨더라고요)개발을 하다 보면 이런 것이 생각 안날수도 있을것같은데(캐시 문제 보다 내 코드가 문제 있겠지라는 생각이요)이것에 대안 대처법 은 없나요?(계속 저가 일일히 캐시를 삭제 해야하 는건지? - 귀찮은 생각이 들더라고요)답변 부탁 드립니다. 수정1읽어보니 글이 이상해서 수정
-
미해결스프링 기반 REST API 개발
Spring 시큐리티 관련해서 WebSecurityConfigurationAdapter
WebSecurityConfigurationAdapter 상속 받아서 작업할려고 했으나 2.1.O 릴리즈 버전에서도 현재는 deprecated 된 상태인데 혹시 그 이후 어떻게 코드를 변경해야하는지 알수 있을까요