묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
패키지 의존성을 확인해보는법?
해당 챕터를 들고 궁금한 점이 있어 문의를 남깁니다. 7분를 들어보면 패키지 의존성을 확인해보라는 말이 나오는데 그런 의존성을 파악하는 툴 같은게 있는건가요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
스프링 프레임워크 동작 구조 정리
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요 !![1] 요청 시에 @RequestBody와 HttpEntity를 안 쓰는 경우 , 응답 시에 @ResponseBody와 HttpEntity를 안 쓰는 경우[2] 요청 시에 @RequestBody와 HttpEntity를 쓰는 경우 , 응답 시에 @ResponseBody와 HttpEntity를 쓰는 경우이 두 가지 케이스로 나누어 스프링 프레임워크의 동작 구조를 정리해보았는데 제가 이해하는 게 맞는지 너무 길지만 한번만 피드백해주시면 감사하겠습니다 !![1]요청 : 파라메터 타입에 @RequestBody X 이거나 HttpEntity X의 경우응답 : 반환 값에 @ResponseBody X 이거나 HttpEntity X의 경우 1. 클라이언트의 요청 2. DispatcherServlet를 호출(urlPatterns = /* 경로이기 때문) 3. HandlerMapping의 가장 우선순위에 있는 구현체인 RequestMappingHandlerMapping을 통해 @Controller이 붙은 클래스의 객체를 매핑 정보로 활용 4. doDispatch()의 getHandler()에서 해당 매핑 정보의 컨트롤러 객체 반환 5. doDispatch()의 getHandlerAdapter()을 통해 HandlerAdapter을 호출 후 컨트롤러를 처리할 수 있는 어댑터 있는지 검증(supports()) 후 어댑터 호출(handle()) 6. 이때 컨트롤러는 @Controller의 @RequestMapping이 붙어있으므로 HandlerAdapter의 가장 우선순위의 RequestMappingHandlerAdapter 어댑터 구현체가 호출되는 것! 7. 어댑터는 컨트롤러의 파라메터에 해당되는 객체가 ArgumentResolver의 구현체로 존재하는지 검증(supportsParameter()) 후 존재하면 생성(resolveArgument()) 8. 어댑터는 생성된 객체를 컨트롤러의 파라메터에 주입하면서 컨트롤러 호출 9. 컨트롤러는 로직 수행 후 return 값(객체)을 어댑터에 반환 10. 어댑터는 ResultValueHandler 호출하면서 반환값에 해당되는 객체가 존재하는지 검증(supportsReturnType()) 후 존재하면 생성(handleReturnValue()) 11. 어댑터는 생성된 객체 및 논리적 뷰 이름으로 초기화된 ModelAndView 객체 생성 후 DispatchServlet에 반환 12. DispatchServlet에서 ViewResolver에 논리적 뷰 이름을 넘겨주면서 호출 13. ViewResolver에선 논리적 뷰 이름을 물리적 뷰 경로로 바꿔주고 그 값으로 초기화된 View 객체 반환 14. DispatchServlet에서 View객체 이용해서 render() 호출 15. JSP 뷰 템플릿이었으면 render()에서 JSP 코드로 포워드 후 랜더링하고 나머지 타임리프 같은 뷰 템플릿이면 render() 받자마자 바로 화면 랜더링 [2]요청 : 파라메터 타입에 @RequestBody O 이거나 HttpEntity O의 경우응답 : 반환 값에 @ResponseBody O 이거나 HttpEntity O의 경우 1. 클라이언트의 요청 2. DispatcherServlet를 호출(urlPatterns = /* 경로이기 때문) 3. HandlerMapping의 가장 우선순위에 있는 구현체인 RequestMappingHandlerMapping을 통해 @Controller이 붙은 클래스의 객체를 매핑 정보로 활용 4. doDispatch()의 getHandler()에서 해당 매핑 정보의 컨트롤러 객체 반환 5. doDispatch()의 getHandlerAdapter()을 통해 HandlerAdapter을 호출 후 컨트롤러를 처리할 수 있는 어댑터 있는지 검증(supports()) 후 어댑터 호출(handle()) 6. 이때 컨트롤러는 @Controller의 @RequestMapping이 붙어있으므로 HandlerAdapter의 가장 우선순위의 RequestMappingHandlerAdapter 어댑터 구현체가 호출되는 것! 7. 어댑터는 컨트롤러의 파라메터에 해당되는 타입의 객체가 ArgumentResolver의 구현체로 존재하는지 검증(supportsParameter()) 8. ArgumentResovler이 검증하던 중 컨트롤러의 파라메터 타입이 @RequestBody 혹은 HttpEntity임을 감지하고 RequestResponseBodyMethodProcessor 구현체가 동작하며 HTTP 메시지 컨버터 호출 9. RequestResponseBodyMethodProcessor 구현체는 HTTP 메시지 컨버터의 canRead()를 통하여 파라메터의 클래스 타입과 미디어 타입(Content-Type)을 검증하고 조건 만족하면 read()를 통해 HTTP 메세지 바디에 있는 데이터 변환 10. RequestResponseBodyMethodProcessor 구현체는 변환된 객체를 어댑터에 반환 11. 어댑터에선 반환된 객체를 컨트롤러의 파라메터에 주입하면서 컨트롤러 호출 12. 컨트롤러는 로직 수행 후 return 값(객체)을 어댑터에 반환 13. 어댑터는 ResultValueHandler 호출하면서 해당 반환값이 존재하는지 검증(supportsReturnType()) 14. 이때 ResultValueHandler에선 컨트롤러의 반환값이 @ResponseBody , HttpEntity임을 감지 후 RequestResponseBodyMethodProcessor 구현체가 동작하며 HTTP 메시지 컨버터를 호출 15. RequestResponseBodyMethodProcessor구현체는 HTTP 메시지 컨버터의 canWrite()를 통하여 파라메터 클래스 타입과 HTTP 요청 메시지에서의 미디어 타입(Accept)을 검증하고 조건 만족하면 write() 수행 16. write()에선 데이터를 변환하여 HTTP 응답 메세지 바디에 삽입 후 응답 메세지 클라이언트에게 반환감사합니다 !! 그리고 만약 제가 정리한 부분이 맞다면 HTTP API 방식으로 동작하는 경우 맨 마지막 16번에서 write() 이후에 만들어진 응답 메세지를 어디서 클라이언트에게 반환하는 건지 궁금합니다 !
-
해결됨스프링 프레임워크는 내 손에 [스프1탄]
Spring05 버전에서 이미지를 설정했을 때 권한이 보이지 않습니다
안녕하세요. 강의를 잘 듣고 있습니다.다름이 아니라 Spring05에서 로그인 후에 ( ) 안에 권한이 보여지는 부분의 문제 때문에 질문합니다.초기에 회원가입 후 권한을 설정했을 때는 아래와 같이 권한이 잘 나옵니다.하지만 프로필 사진을 등록하면 그 이후부터는 로그아웃 후 다시 로그인을 해도 권한이 보이지 않습니다. SQL을 확인해 보면 테이블에 권한은 삭제되지 않고 있는데 나오구요...header.jsp에서 권한이 보여지는 부분은 잘 작성된 거 같고 maapper.xml도 정상인 것 같은데 왜 프로필 사진을 등록한 이후에는 권한이 보여지지 않는건지 잘 모르겠습니다ㅠㅠ도움을 부탁드립니다!
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
jsp파일 관련 에러 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.모든 jsp 파일 첫 줄에 아래와 같은 에러가 나는데 구글링을 해보니 자신이 사용할 톰캣을 facets에 추가해주면 된다고 하더라구요! 그런데 제가 수업때 배운내용은 스프링 컨테이너 안에 이미 톰캣이 내장되어있는데 제가 따로 다운 받아두었던 톰캣을 사용해도 되나? 가 궁금합니다! Description Resource Path Location TypeThe default superclass, "javax.servlet.http.HttpServlet", according to the project's Dynamic Web Module facet version (2.4), was not found on the Java Build Path. new-form.jsp /servlet/src/main/webapp/jsp/members line 1 JSP Problem
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
v3 프로그램 작동원리 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]질문이 총 2가지 인데요.http://localhost:8080/front-controller/v3/members/new-form 이 url을 호출하게 되었을 때 FrontControllerServletV3 클래스가 생성되는 것 까지는 이해 할 수 있는 데 그 이후에 service 매서드가 자동적으로 실행이 되는 건가요?마지막 html 응답을 하는 부분에서 RequestDispatcher dispatcher = request-getRequestDispatcher (viewPath); dispatcher. forward (request, response);이렇게 하는 데 viewPath 경로의 jsp 파일에 request랑 response를 주면 어떤 과정을 통해 화면에 html이 보이게 되는 것인 지 잘 모르겠습니다. 제가 이해한 바로는 forward가 내부적으로 서버에 정보를 전달한다고 이해를 했는데 그렇게 되면 서버에서 클라이언트로 응답은 누가 하는 것인지 이해가 잘 안돼서요.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
index.html 오류 원인이 뭔가요?
프로젝트환경설정 파트에서 resources/static/index.html 이경로에 교수님이랑 똑같은 코드를 복붙했는데 저런 오류가 뜹니다 어떻게 해결해야할까요?
-
미해결Java 마이크로서비스(MSA) 프로젝트 실습
wmi exporter - prometheus 연동 실패
prometheus 와 WMI exporter 연동이 왜 안되는지 모르겠습니다.global: scrap_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: "prometheus" static_configs: - targets: ["localhost:9090"] - job_name: "windows" static_configs: - targets: ["192.168.0.101:9182"]위와같이 제 pc의 ip를 192.168.0.101로 설정했습니다.cmd창에서 확인한 것입니다.PS D:\study-workspace\springBoot-workspace\iron-msa> ipconfig Windows IP 구성 이더넷 어댑터 vEthernet (Default Switch): 연결별 DNS 접미사. . . . : 링크-로컬 IPv6 주소 . . . . : fe80::2609:80c8:ea62:2e07%31 IPv4 주소 . . . . . . . . . : 192.168.16.1 서브넷 마스크 . . . . . . . : 255.255.240.0 기본 게이트웨이 . . . . . . : 이더넷 어댑터 이더넷: 연결별 DNS 접미사. . . . : 링크-로컬 IPv6 주소 . . . . : fe80::f3d1:5994:1b9d:5bf8%9 IPv4 주소 . . . . . . . . . : 192.168.0.101 서브넷 마스크 . . . . . . . : 255.255.255.0 기본 게이트웨이 . . . . . . : 192.168.0.1 연결별 DNS 접미사. . . . : 이더넷 어댑터 vEthernet (WSL): 연결별 DNS 접미사. . . . : 링크-로컬 IPv6 주소 . . . . : fe80::a35b:8530:2f6d:4eb9%38 IPv4 주소 . . . . . . . . . : 172.18.0.1 서브넷 마스크 . . . . . . . : 255.255.240.0 기본 게이트웨이 . . . . . . : 아래는 혹시 ip를 잘못지정한 것일까봐 확인한 것입니다.도와주실 수 있나요
-
해결됨스프링 핵심 원리 - 기본편
@Configuration을 안 쓰고 @Bean만 쓴 경우
안녕하세요:) @Configuration과 Bytecode의 조작의 마법 강의에서 질문드리고 싶은 점이 있습니다. AppConfig에서 @Configuration을 안 쓰고 @Bean만 쓴 경우에 스프링 빈으로는 다 등록된다고 하셨는데요,그렇다면 스프링 빈으로 올라갈 때 memberRepository()가 세 번 호출되면서 이름은 memberRepository으로 존재하고 인스턴스 객체는 그때마다 덮어씌우기 되는 건가요??아니면 이름 한 개에 여러 개의 객체 인스턴스가 스프링 빈으로 등록되는 걸까요?또는 프로토타입 스코프 빈처럼 요청할 때마다 새로 생성되는 건가요..?? 또 @Bean만 작성해도 스프링 빈으로는 등록되지만, memberRepository가 스프링 컨테이너가 관리하는 스프링 빈이 아니라는 말도 이해가 잘 안가서요..! 같이 질문드리고 싶습니다.질문이 매끄럽지 못해서 죄송합니다 ㅠㅠ
-
미해결스프링 핵심 원리 - 기본편
CoreApplication 실행시 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예강의초반의 설명에 따라 hello.core.CoreApplicaton을 실행하니MemberServiceImpl에서 생성자가 1개의 bean을 필요로 하는데 두개의 bean이 찾아졌다고 합니다. Description에따라 MemberServiceImpl, MemoryMemberRepository, AppConfig를 확인해보았지만강의와 다른 점을 찾지 못해 해결하지 못하였습니다. Action에 적힌 것처럼 @Primary를 붙이거나 @Qualifier을 붙여서 해결해야 하는 건가요?MemberServiceImplAppConfigMemoryMemberRepositoryAutoAppConfig
-
미해결스프링 핵심 원리 - 기본편
@Autowired 빨간줄
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)@Autowired 입력시 빨간줄이 뜹니다무시하고테스트 코드 동작시에는 통과로 뜨지만,키값과 값이 비어있습니다.에러 내용은 다음과 같습니다.Autowired members must be defined in valid Spring bean (@Component|@Service|...) @Component를 추가하면 없어지지만,테스트 코드 실행시 키값과 값이 비어있는것은 동일합니다..
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
HTTP 메시지 컨버터 동작 순서를 변경 하는 경우
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요. http메시지 컨버터 동작 순서가ByteArrayHttpMessageConverterStringHttpMessageConverterMappingJackson2HttpMessageConverter라고 말씀해주셨는데 제가 해당 부분을 수정해서MappingJackson2HttpMessageConverter가 1번으로 동작하게 변경을 했다고 가정을하면Json데이터를 처리할 때 속도는 미세하게라도 더 빠르다고 생각을 하고 있습니다.아니면 모종의 이유로 속도가 저하 되는지 궁금해서 질문드립니다. ㅎㅎㅎ
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
H2 데이터 베이스 설치 오류
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발섹션 1. 프로젝트 환경설정H2 데이터 베이스설치 관련 질문사항 제가 원래 H2는 제대로 동작 됐고 다음 JPA와 DB 설정을 진행하다 오류가 생겨 고민하다 아예 전부 지우고 다시 시행하는 과정에서 이번에는 H2데이터 베이스를 설치하면서 해결이 되지 않아서 질문합니다. (아마 제 생각에는 여러 번 깔았다가 지웠다하면서 뭔가 오류가 생긴 것 같습니다.)1.cmd 창에 입력하면 창이 새롭게 뜨지 않습니다.2.cmd (관리자 권한)이어도 마찬가지로 h2창이 뜨지 않습니다.3.h2 console 을 누르면 아무런 반응이 없습니다. 어떻게 해야할까요? 아니면 흔적이 남지 않게 완전히 지우는 방법이라도 알려주세요...버전을 다르게 깔아봤는데도 마찬가지입니다.
-
미해결스프링 핵심 원리 - 기본편
mysql 연동관련
안녕하세요 옛날에 했던 프로젝트 db를 mysql로 바꾸는 중에 에러가 났습니다.db connection까지도 완료 했는데 에러가 뜨네요무슨 문제일까요....
-
미해결스프링 핵심 원리 - 기본편
Spring 에서 MVC 간 객체를 넘겨주는 방법에 대한 질문
강의하셨던 코드를 쭉 훑어봤습니다.강의에서 Spring이 굉장히 방대한 것을 알았습니다. 그리고, Spring에서의 MVC구조에 대해서는 대략 알게 되었습니다. 강의를 듣다 문득 궁금해졌던 부분인데,Spring 에서는 객체를 Spring Container에 넣어줘서 Bean으로 관리한다고 알려주셨습니다. Bean으로써 관리되는 객체는 Spring이 자동적으로 Dependency Injection을 한다고도 알려주셨고요.Spring Container, Bean은 자동 객체의 생성과 관리를 관장한다고는 알고있긴합니다만, MVC간 data 전달은 잘 모르겠습니다. 궁금한것은 Model Controller View간 객체를 전달 할 때의 방법과 그 내부적인 원리에 대해서입니다.Controller에서 Service/DTO/Repository쪽에서 Object를 어떻게 HTML인 View 에 전달하는지그리고 View에서 어떻게 Object를 사용하고,또 그 Object를 어덯게 Controller에 전달하는지가 알고싶습니다.또, URL에서 QueryString이 어떻게 Client쪽에서 처리되어 Server쪽에 도달하는지, 그 내부적인 프로세스에 대해서 알고싶습니다.전체적으로 Object들이 어떤 흐름으로 MVC에 전달되고, MVC 내부적으로 어떻게 Object들을 공유하길래 HTML과 Java Code간 객체의 데이터를 공유가능한건지 궁금합니다. 이건 Serialization과 관련된 내용인가요? 저 내용들을 다 알려주시기 어렵다면, 검색 키워드만이라도 알려주시면 좋겠습니다. "how does spring send objects with view internally and controller" "how does spring view send object to controller internally"등으로 검색해봐도 원하는 정보가 나오지 않네요...또한, 저 내용들이 김영한님 강의에 있는 내용이라고 하고, 더 강의를 들으면 알 수 있는 내용이라고 한다면, 검색 키워드와 함께 김영한님 강의 어느부분에서 다루는지도 알려주셨으면 합니다. 일단 강의는 모두 구매한 상태라 들을 수 있습니다..
-
해결됨실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
Kotlin에서 필드 정의할때 질문드립니다.
안녕하세요. 강의 다시 보기 하다가 질문이 생겨서 글 남깁니다. @Entity class Book( val name: String, @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long? = null, ) { } @Entity class Book( name: String, ) { var name: String = name private set @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long = 0L } 코틀린에서 필드를 기본생성자로 하는 방식과 클래스 본문으로 하는 방식으로의 차이가 궁금해서 질문드립니다! 감사합니다
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
HandlerMethodArgumentResolver의 resolveArgument()의 호출 위치
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]RequestMappingHandlerAdapter에서 컨트롤러의 파라메터에서 필요로 하는 객체를 반환받아서 ArgumentResolver의 supportsParameter()를 통하여 반환받은 객체가 있는지 검증 후 있으면 ArgumentResolver의 resolveArgument()를 통하여 컨트롤러를 호출해준다고 이해했습니다. 그런데 핸들러 어댑터 로직을 살펴보니 supportsParameter()를 통해 검증해주는 로직은 있지만 resolveArgument()를 호출해주는 로직이 존재하지 않는데 어디서 resolveArgument()를 통하여 컨트롤러를 호출할 수 있는 건지 resolveArgument()의 호출 위치가 궁금합니다 !
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
타임리프 기본기능 강의중에 궁금한것이 있습니다.
==========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]이런질문을 해도될지 모르겠습니다만.타임리프 기본 강의중에 어떠한 리스트를 테스트 하기 위해서addUsers라는 메소드로 리스트를 만들어서 model에 넣어 사용하는데요.저같은경우라면 보통 더미?를 만들때는private List<User> createUserList() { List<User> list = new ArrayList<>(); list.add(new User("UserA",10)); list.add(new User("UserB",20)); list.add(new User("UserC",30)); return list; }이런식으로 만들어서 데이터를 전달하는데영한님은private void addUsers(Model model) { List<User> list = new ArrayList<>(); list.add(new User("UserA",10)); list.add(new User("UserB",20)); list.add(new User("UserC",30)); model.addAttribute("users", list); }이런식으로 메소드에서 리턴하는것이 아닌 모델을 받아 처리하도록 구현하셨더라구요.어떠한 장점이 있어서 이런식으로 구현하신건가요? 아니면 그냥 스타일의 차이일까요 ?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
테스트 실행하면 되긴하는데 오류가 나옵니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. WARNING: A Java agent has been loaded dynamically (C:\Users\qudrn\.gradle\caches\modules-2\files-2.1\net.bytebuddy\byte-buddy-agent\1.14.10\90ed94ac044ea8953b224304c762316e91fd6b31\byte-buddy-agent-1.14.10.jar)WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warningWARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more informationWARNING: Dynamic loading of agents will be disallowed by default in a future releaseOpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended테스트를 실행하면 이런 문구가 나옵니다.잘 실행되는데 저런 오류가 나오니 잘 되는건지 안되는건지 잘 모르겠습니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
5~6강 질문이요
post방식은 dto 객체 앞에 @RequestBody가 있는데 get방식은 왜 dto객체 앞에 @RequestParam을 안 써요? 맨 처음에 dto 객체 없었을 때 매개변수 이용하였을 때는 @RequestParam 썼던 것 같은데..
-
미해결스프링 핵심 원리 - 기본편
스프링 빈 등록과 의존관계 설정
수동으로(AppConfig를 이용해서) 스프링 컨테이너에 빈을 등록하는 과정에서 만약 다른 빈이 필요하다면 해당 빈의 의존성이 주입 된다고 이해했는데 그렇다면 실제로 등록과 의존성 주입은 거의 동시에 일어나고 강의에서 이 두 과정을 분리해서 설명한 것은 이해를 돕기 위한 것인지 확인 차 질문 드립니다.