묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
getHandler() 에서의 로직과 그 이후
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]안녕하세요. doDispatcher에서의 getHandler() 코드를 보다가 제가 나름대로 정리해본 것이 맞는 지 질문드립니다.한 url 에서 요청이 오면, 핸들러 맵핑 조회에서 1순위가 RequestMappingHandlerMapping 이므로, 먼저 getHandler()의 while 문 내부 HandlerMapping mapping 에 RequestMappingHandlerMapping이 대입된다.// 스프링 getHandler() 코드 일부 발췌 if (this.handlerMappings != null) { Iterator var2 = this.handlerMappings.iterator(); while(var2.hasNext()) { HandlerMapping mapping = (HandlerMapping)var2.next(); HandlerExecutionChain handler = mapping.getHandler(request); if (handler != null) { return handler; } } } 다음 줄의 mapping.getHandler(request)를 통해 @Controller가 붙은 클래스 중, 요청 url와 맞는 @RequestMapping(”url”)이 붙여진 메소드를 보유한 클래스를 핸들러로 가져온다.디스패처서블릿이 이 핸들러와 맞는 어댑터(RequestMappingHandlerAdapter)를 찾아오고,어댑터.handle() 을 통해 @RequestMapping(”url”)이 붙여진 메소드가 실행된다. 제가 생각한것이 맞는 지 궁금하여 질문드립니다.감사합니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
진행과정중 로그 표시
김영한 선생님과는 다르게 너무 로그가 간단하게 나오고 좌측에 Test Results도 열어봐도 아무것도 없다고 나옵니다 왜그럴까요? ㅠㅠ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
username=kim&username=hello의 경우 잘못 설계한거 아닌가요?
처음에는 username=kim&username=hello와 같이 쿼리 파라미터를 사용한다면 잘못 설계한것이 아닌가 생각을 했는데오히려 스프링 자체에서 getParameterValues로 중복된 쿼리 파라미터의 키를 허용한다면 의도적으로 사용할 수도 있는건지, 그렇다면 왜 저렇게 사용하는지 궁금합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
정적인 화면과 정적 리소스
6:57에 나오는 서버사이드 렌더링에 대해서 질문드립니다HTML 최종 결과를 서버에서 만들어서 웹 브라우저에 전달주로 정적인 화면에 사용이렇게 나와있는데요서버에서 만들어서 제공하는거면 동적 리소스인데 왜 정적인 화면에 사용한다는 건가요?동적 리소스 == 동적 화면정적 리소스 == 정적 화면아닌가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
스프링이랑 관련없는 번외질문입니다!
스프링MVC1편 수강생이 약 2만3천명이라고 뜨는데 이게 2024년도 기준 수강생인가요? 아니면 스프링MVC1편 출시날부터 오늘까지 누적수강생이 2만3천명이라는걸까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
DataSourceUtils import가 안돼요.
[질문 내용]저는 이클립스 4.2 , JDK17버전을 사용하고 있습니다.근데 datasource 연결하는데import가 되지 않습니다..private Connection getConnection() { return DataSourceUtils.getConnection(dataSource); }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원 가입 시 member
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. public Long join(Member member){ validateDuplicateMember(member); System.out.println(member.getId()); memberRepository.save(member); System.out.println(member.getId()); return member.getId(); }위 코드는 멤버 가입 시 MemberService의 join 메소드 입니다.member의 아이디가 부여되는 시점은 memberRepository.save(member);가 호출되어 저장이 되는 시점입니다.위 코드에서 return member.getId();의 member는 컨트롤러에서 넘어온 member왜 같은 인스턴스라고 생각됩니다. 1. memberRepository.save(member);가 아닌member = memberRepository.save(member); 2번의 코드의 경우 id가 생긴 member를 다시 member에 저장하게 되어 member.getId()를 호출하면 아이디가 나오는 것이 맞다고 생각되는데 1번처럼 코드를 작성해도 member에 id가 왜 저장되어 있는지 궁금합니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
8분쯤 나오는 첫번째테스트 오류
[질문 내용]다음과 같은 오류가 발생하는데 이유를 모르겠네요 ㅠㅠ
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
질문이 있습니다
[질문 내용]이런 로깅기능을 사용하는 이유는 에러가 발생했을때 어떤 오류때문에 발생했는지 확인하기위해서 로그를 찍어본다고 생각하면 될까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
model에 관한 질문
컨트롤러에서 모델에 등록하고 html에서 타임리프로모델에 등록된 값을 보여줄 수 있어요컨트롤러당 1개 모델 사용하는건가요? 모델 1개로 여러 컨트롤러가 사용하는건가요? 궁금하네요~!
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
모델이라는것이 잘 이해가 가지 않습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]컨트롤러 설계시간에서 부터 이해에 어려움이 있었는데 모델이라는 것이 어떤것을 의미 하는지 모르겠습니다.서블릿을 이용할때 request.setAttribute(“member”, member); 코드에서 모델에 데이터를 담는다 라고 하셨었는데그때는 모델이 폼에서 회원가입을 누르면 나오는 뷰를 말하는줄 알았는데 지금까지 수업을 들어보니 뷰를 의미하는것이 아닌것 같습니다. 컨트롤러 버전을 강화하면서 프론트컨트롤러 v3에서 Map<String, String> ParamMap = new HashMap<>();이라는 코드가 왜 있는지 각각의 키와 벨류는 어떤것인지도 무엇인지 모르겠습니다. paramMap.get(“username”)으로 값을 꺼내왔는데 어떻게 이 기능이 가능한지도 잘 모르겠습니다. 모델이 무엇인지 Map<String, String> ParamMap = new HashMap<>();의 코드가 어떤 기능을 하고 각 키, 벨류가 무엇을 의미 하는지이해하고 싶습니다. 모르는것이 있으면 빠르게 정리하여 질문했어야 하는데 늦게 질문해서 죄송합니다 ㅠㅠ
-
미해결처음하는 파이썬 백엔드 FastAPI 입문 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
혹시 나중에 Django 강의도 내실건가요??
Flask도 내시고, fastAPI도 내셨으면 Django도 내실거 같아서요.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@RequestMapping은 안드로이드 어플 개발에서 사용이 가능한가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]해당 어노테이션은 url이 들어와야 매핑이 되는거로 인지 하였는데 안드로이드 어플에서는 url로 호출을 하지 않을거 같은데 웹이 아닌 앱 개발에서는 다른 기능을 사용하여야 하나요>?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
application.properties datasource질문
Test 부분에서 application.properties에 spring.profiles.active=test #spring.datasource.url=jdbc:h2:tcp://localhost/~/testcase #spring.datasource.username=sa #jdbcTemplate sql log logging.level.org.springframework.jdbc=debugurl과 username을 추가했었는데 h2 서버를 띄우지도 않았는데 작동되는 이유가 무엇인가요? (저 주석은 마지막강의 임베디드 메모리 강의듣느라 주석처리했습니다.) 이미 서버를 한번 띄었었기 때문에 작동이 되는것인지 궁금합니다
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
웹 페이지 배경 검은색 출력
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]배경이 흰색 페이지였다가 hello 서블릿 호출을 클릭하니까배경이 검정색으로 바뀌었습니다. 혹시 왜 그런걸까요??뭔가 파라미터 값을 넘길때만 그런 것 같기도 합니다
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드 관련 질문 있습니다.
윈도우로 하고 있는데gradlew.bat 을 빌드 하면 해당 오류가 뜨고 있습니다.세팅은스프링 부터 3.2.3자바 21 입니다. Gradle 세팅은해당 입니다.환경변수 확인 해봤는데 사용자 변수에는 JAVA_HOME 자체가 탐색도 안되는거 같습니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
@Transactional 위치와 적용에 대하여
[질문 내용] @Transactional public void accountTransfer(String fromId, String toId, int money) throws SQLException { bizLogic(fromId, toId, money); } public void bizLogic(String fromId, String toId, int money) throws SQLException { Member fromMember = memberRepository.findById(fromId); Member toMember = memberRepository.findById(toId); memberRepository.update(fromId, fromMember.getMoney() - money); validation(toMember); memberRepository.update(toId, toMember.getMoney() + money); }안녕하세요. 강의 코드와 같이 accountTransfer을 실행했을때 트랜잭션이 잘 작동되어 오류가 발생했을때 롤백이 실행됩니다. @Transactional public void accountTransfer(String fromId, String toId, int money) throws SQLException { Member fromMember = memberRepository.findById(fromId); Member toMember = memberRepository.findById(toId); memberRepository.update(fromId, fromMember.getMoney() - money); validation(toMember); memberRepository.update(toId, toMember.getMoney() + money); }이 코드 또한 그렇습니다. public void accountTransfer(String fromId, String toId, int money) throws SQLException { bizLogic(fromId, toId, money); } @Transactional public void bizLogic(String fromId, String toId, int money) throws SQLException { Member fromMember = memberRepository.findById(fromId); Member toMember = memberRepository.findById(toId); memberRepository.update(fromId, fromMember.getMoney() - money); validation(toMember); memberRepository.update(toId, toMember.getMoney() + money); }하지만 이 코드에서 accountTransfer을 실행했을때 트랜잭션이 작동하지 않습니다.이유가 무엇일까요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
안녕하세요! 강의 내용을 바탕으로 응용해서 H2 데이터베이스에서 MySQL로 바꾸는 작업을 하고 있습니다!
https://drive.google.com/file/d/1ZTyx0uvGjnTkhf1YH7t2espgi1Koaf0N/view?usp=sharing build.gradle이랑 application.properties diver 설정도 했는데 왜 부트가 꺼지는지 모르겠네요...ㅠ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
프로젝트가 처음부터 오류가 발생합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]스프링 부트 프로젝트 생성open build.gradle as project아래와 같이 프로젝트들이 모두 붉은색인데 괜찮은건가요..? build.gradle제 Gradle JVM 도 21버전입니다.Build and run using 과 Run tests using 모두 Gradle입니다.설정도 다 마치고, HelloServlet 에서 오버라이드가 안됩니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
스프링이 제공하는 기능과 스프링 빈의 관계
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]스프링이 제공하는 트렌잭션 AOP를 사용하면 스프링 부트에서 관련된 로직을 자동으로 스프링 빈으로 등록한다는 설명에서 궁금한 점이 생겼습니다. 개발자들이 직접 컴포넌트 스캔이나 @Controller 와 같은 애너테이션을 사용해서 등록하는 빈들과 별개로 트렌젝션과 같은 부가 가능또한 빈으로서 관리가 되어야 사용할 수 있는 것인 걸까요? 어떻게 보면 당연히 등록되어야지! 라는 생각도 들지만, 스프링 빈으로 등록이 되어야하는 객체에 기준이 있는건지 궁금합니다. 예상하는 기준은 다음과 같습니다.1. 개발자가 서비스 로직을 만들기 위해 개발되는 모든 것은 스프링 빈으로 등록하여 싱글톤으로 용이하게 관리하며 자동의존 주입을 받는다. 2. 데이터 접근 기술이나 트랜잭션 같이 스프링에서 편리하게 관리할 수 있게 만들어 놓은 것을 사용하려면 스프링 빈으로 등록해서 사용해야한다. 2-1. 다만 스프링에서 제공하는 기능적인 기술은 스프링 부트를 사용시 자동으로 등록해준다.