묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
index.html에는 th:replace 적용이 안되나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]템플릿 레이아웃 1의 내용을 보면 templates경로로 들어가서 th:replace를 하는데 제가 index.html에서 ../templates/경로로 하니 인식을 못합니다. 이게 static/index.html은 사용 불가인지 궁금합니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
RequestMethod.GET인데도 HEAD로 요청했을 때 오류가 안 나는 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)@RestController public class MappingController { private Logger log = LoggerFactory.getLogger(getClass()); @RequestMapping(value = "/hello-basic", method = RequestMethod.GET) public String helloBasic() { log.info("helloBasic"); return "ok"; } } 이렇게 RequestMethod.GET인 상태에서 Postman으로 /hello-basic를 GET으로 요청하면 ok가 반환되고 다른 HTTP 메서드, 예를 들어 POST로 요청하면 HTTP 405 상태 코드를 포함한 에러 메시지가 반환된다고 이해했습니다.그런데 똑같이 RequestMethod.GET인 상태에서 Postman으로 HEAD로 요청하면 HEAD 특성상 원래도 ok를 반환하진 않지만, 응답에 에러 메시지도 안 뜹니다. 인텔리제이의 콘솔 창에서도 GET으로 요청했을 때와 마찬가지로 log.info("helloBasic");가 정상적으로 호출됩니다.GET과 HEAD가 body에 내용물이 있고 없고의 차이 말곤 비슷하다고 알고 있긴 했지만, 스프링의 RequestMethod나 RequestMapping 내부 코드를 봐선 RequestMethod.GET임에도 불구하고 HEAD로 요청했을 때 오류가 나지 않는 이유를 못 찾겠습니다. 이유가 무엇인가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
이 메서드를 호출하려면 URL 주소를 어떻게 써야 하나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]@GetMapping(value = "/mapping-param", params = {"mode=debug","mode=good"}) public String mappingParam() { log.info("mappingParam"); return "ok"; } http://localhost:8080/mapping-param?mode=debug http://localhost:8080/mapping-param?mode=good http://localhost:8080/mapping-param?mode=debug&mode=good 이 URL들로는 Whitelabel Error Page가 뜨는데 어떻게 호출할 수 있나요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
checked 동작과정 및 th:value의 의미
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요 checked 동작과정이 계속 들었지만 잘 이해가 가지 않아서 혹시 간단하게 설명해주실 수 있으신가요..?? 추가로 체크박스 및 라디오 박스에서의 th:value의 정확한 역할이 궁금합니다 !
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
프록시 관련 질문이 있습니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요.김영한 선생님. 선생님의 강의를 잘 듣고 있습니다.현재 AOP 적용 부분에서 프록시 부분에 대한 설명을 듣고 있었는데요, 선생님께서는 프록시가 컨트롤러 내부에서 형성되어 그 프록시가 실질적인 서비스 부분으로 요청을 넘겨주고 처리해 줄 것이다. 이런 느낌으로 말씀해주셨던 것 같습니다.여기서 조금 궁금했던 부분이 있습니다. 만약 다른 컨트롤러 파일 내부에서 같은 서비스에 대해서 AutoWired를 통해 의존성 주입을 받게 될 경우, 서비스를 연결하는 프록시가 컨트롤러마다 생길지에 대해서 궁금했었습니다.제가 생각하기에는 다른 프록시가 서로 나올 거 같은데, 로그를 찍어보았을 때는 두 컨트롤러가 같은 프록시를 공유하였습니다.혹시 프록시의 생성 기준은 서비스일까요 컨트롤러일까요? 또한 AOP를 사용하지 않는 경우 해당 파일은 프록시를 전혀 사용하지 않을까요? 그것이 궁금합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. resolverException이 빈 ModelAndView객체를 반환하는 이유가 이해가 가지 않습니다. 왜 빈 객체를 반환하는 것인가요? 만약 객체를 반환하지 않으면 어떻게 되는 것인지 궁금합니다. 추가로,package hello.exception.resolver; import com.fasterxml.jackson.databind.ObjectMapper; import hello.exception.exception.UserException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ModelAndView; import java.io.IOException; import java.util.HashMap; import java.util.Map; @Slf4j public class UserHandlerExceptionResolver implements HandlerExceptionResolver { private final ObjectMapper objectMapper=new ObjectMapper(); @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { try{ if(ex instanceof UserException){ log.info("UserException resolver to 400"); String acceptHeader = request.getHeader("aceept"); //헤더를 꺼냄 response.setStatus(HttpServletResponse.SC_BAD_REQUEST); // 상태코드 400으로 변경 if("application/json".equals(acceptHeader)){ log.info("Start to change json"); Map<String,Object> errorResult=new HashMap<>(); errorResult.put("ex",ex.getClass()); errorResult.put("message",ex.getMessage()); String result = objectMapper.writeValueAsString(errorResult); response.setContentType("application/json"); response.setCharacterEncoding("utf-8"); response.getWriter().write(result); return new ModelAndView(); } else{ log.info("Start to text"); return new ModelAndView("error/500"); } } }catch(IOException e){ log.error("resolver ex",e); } return null; } }이렇게 작성하였는데 결과가 자꾸 text.html로 나옵니다. 로그를 찍어보니 if문이 안나오고 else문으로 나오게 됩니다. 포스트맨 출력 결과는 이렇습니다원인을 알 수 있을까요?
-
미해결스프링 부트 - 핵심 원리와 활용
username만 다르게 뜹니다.
프로필 적용할 때부터 이렇게 username은 다르게 뜨는데 어떻게 해야될까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. PostMan으로 구동 시 Json으로 반환하지 않고 기존에 설정한 것이 자꾸 불러와집니다. 로그에는 errorpage 500이라고 찍히고 error-page/500이 전달되는데 뭐가 문제일까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
CSR 절차 질문있습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]CSR에서 클라이언트에서 자바스크립트 요청을 하고 서버에서 응답으로 HTML 렌더링 코드를 준다고 하셨는데 여기서 "HTML 렌더링 코드"의 의미가 HTML를 자바스크립트로 어떻게 렌더링 하는지 알려준다고 설명해주셨습니다 근데 마지막 4번째 절차에서 자바스크립트로 HTML 결과 렌더링한다고 하셨는데 설명하신거랑 절차가 다른데 어떻게 가능한건가요 ?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
상품 도메인 개발 DTO 사용 관련 질문 드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요.도메인 내용 중 ItemRepository 객체 중 update 메서드의 파라미터를 Item -> ItemDto 객체로 변경하여 사용하려고 합니다. Dto를 적용함으로써 얻는 장점을 이렇게 이해했는데 맞나요?1. 코드의 명확성(역할 분할 - DB연동/Data전달)2. 복잡한 서비스 구축 시, 도메인 객체 변경 최소화를 위해현업에서 Dto 생성 시, Package를 어떻게 구성하여 생성하는지?EX) Dto 패키지를 domain과 관련 없는 경로에 신규 생성?위 내용대로 ItemRepository 내부의 메서드의 파라미터를 변경하게 되면, 결국 도메인 에서 Dto를 참조?의존? 하게 되는건데 올바른 설계 방법인지 궁금합니다.올바르지 않다면 service 부분 등에서만 사용 하는 게 맞는 건가요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
DTO내에 정적 팩토리 메서드를 생성해도 되는걸까요?
말그대로 컨트롤러 층에서 인스턴스 생성 코드를 작성하는 게 아니라Member 인스턴스 생성 메서드를 DTO내부에 만들어서 반환해도 될까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
save()테스트 시 오류 해결 궁금증(재질문)
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용](전 글 링크 - https://www.inflearn.com/questions/1163632/save-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%8B%9C-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0-%EA%B6%81%EA%B8%88%EC%A6%9D)안녕하세요 영한님, 전 글에 답변 남겨주신 것 잘 봤습니다. 감사합니다. 프로젝트 압축 파일 아래 첨부합니다.https://drive.google.com/file/d/1D6CY3wukI8xV2reviLgJrg8OJ5cISP8F/view?usp=sharingtest 코드 - gradle로 설정 후 실행 했을때, 오류 test 코드 - intellij idea로 실행했을 때, 성공
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
MemberFormControllerV2 스펙 질문이요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]영한님이 V2 강의 막바지에 MemberFormControllerV2는 servlet 메소드를 사용하지 않는데 스펙상 명시해줘야 했다라고 하셨는데 Member List,Save 컨트롤러에서 서블릿 메소드를 사용하기 때문에 부모인 ControllerV2 에서 request와 response를 사용하도록 설계한것인가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
테스트 오류
1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)스프링 데이터 jpa 테스트하면 오류가 뜨네요 뭐가 문제일까요ㅜㅜ
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
Override Methods가 존재하지 않는다고 뜨는데...
저번에 한번 질문을 드렸을 때, 해주신 답 덕분에 인텔리제이는 유료(정확힌 학생 버전으로)로 바꾸어서 해결했었는데...이번에는 여기서 안되는데... 이유가 뭘까요?
-
해결됨토비의 스프링 부트 - 이해와 원리
안녕하세요 토비님. 강의중 질문있습니다.
안녕하세요 강의 잘 듣고있는 학생입니다.다름이 아니라 applicationContext의 생성과정이 아직 스스로 정리가 되어있지 않아 이렇게 질문을 드립니다..우선 제 생각은 이렇습니다.applicationContext를 생성하면서 내부적으로 onRefresh() 를 오버라이딩을 합니다.여기서 ServletWebServerFactory serverFactory = this.getBean(ServletWebServerFactory.class); DispatcherServlet dispatcherServlet = this.getBean(DispatcherServlet.class); 을 통해서 등록된 Bean을 들고오게 됩니다.여기서 드는 의문점1은, this.getBean(DispatcherServlet.class)을 한다는 것은 이미 DispatcherServlet이 Bean등록이 되어있다는 것이고 그렇다면 applicationContext라는 변수를 만들기 전에 이미 Bean이 등록이 되어있었다고 생각됩니다. 그러면 applicationContext라는 변수를 방금 막 선언하고 아직 객체를 할당하는 과정인데 this.getBean이 작동한다?this는 분명 applicationContext인데 어떻게 applicationContext안의 getBean을 통해 dispatcherServlet등이 불러와지는지 모르겠습니다.. (요약하면, 아직 인스턴스를 만들지 않았는데 어떻게 applicationContext안의 getBean이 동작할 수 있는가? 입니다) 두번째는, 어떻게든 위의 과정을 거쳐서 applicationContext(스프링 컨테이너)가 서블릿 컨테이너와 연결이 되었습니다. 이후 applicationContext.register(HellobootApplication.class)를 하게되는데, 이미 위에서 빈 등록도 다 하고 모든걸 가지고 있는것 같은데 왜 register가 필요한것인지 모르겠습니다 ㅠㅠ register하는 코드는HellobootApplication.class라는 클래스 구성정보를 읽어서 그 내용을 토대로 빈(이때 이 빈은 HellobootApplication 빈 일까요??)을 등록한다 라고 생각되는데, HellobootApplication 클래스의 정보에는 팩토리 메서드 2개(ServletWebServerFactory,DispatcherServlet) 와 applicationContext를 구성하는 코드밖에 없다고 생각됩니다. applicationContext를 구성하는 과정에서 이미 팩토리 메서드 정보를 사용한 것 같은데, 그렇다면 이미 빈을 만드는데 필요한 정보는 다 가지고 있는것이 아닌가? 라고 생각이 듭니다. 이런 부분들이 자꾸 맘에 걸려서 다음강의로 못넘어가겠습니다 ㅠㅠ 명확하게 정리해주시면 감사하겠습니다..
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
DTO 관련 질문있습니다.
안녕하세요 ~자바 개발자 경력자인데요.먼저 그냥 코딩을 이때까지 해왔지만 이렇게 기초부터 차근차근 비유해주시면서 설명해주시니 다시 개념확립이 되는것같아 감사드립니다.일단 제가 궁금한점이 SI 이나 이떄까지 회사 프로젝트를 다녀본결과 .. 예를들어 쿼리결과를 저장하고 , API 사용시 (요청 /결과)모두 이때까지 VO 라는 클래스를 만들어 사용하고 보았는데요.이전부터 DTO , VO 두개의 차이점의 개념은 알고 공부하고 알고는 있었느나 , 항상 이때까지 모든 프로젝트에서는 모든 클래스를 뒤에 UserVO , DetailVO ... 이렇게 사용하곤했는데요.아직까지도 아직경험을 못해서그런지 VO vs DTO 개념이 확립이안되네요;앞으로 프로젝트참여시 VO 를 DTO 라고 명칭만 바꿔서 사용하면될까요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
BasicErrorController 가 정확히 어디까지 자동으로 해주는 건가요?
pdf19쪽에 Spring에서 자동으로 제공하는 기능이ErrorPage 추가하고 해당 컨트롤러를 만들어준다는 것이라고 적혀있는데요 그럼 내부호출로 에러에 대한 페이지를 요청하는 내부request일때(dispatcherType=ERROR)필터와 인터셉터 재호출을 방지하기 위한 것들은 남겨둬야되는 것인가요? 즉 LogInterceptor와 LogFilter 클래스는 남겨두어야 되는건가요? ps. 그리고 /error 쪽을 찾게 되는 것은 request URL에 대한 controller가 없으면무조건 /error 쪽으로 가서 찾는거 맞나요?즉 존재하지 않는 url에 대한 요청이면 자동으로 /error로 바꿔서 처리하는거 맞나요?
-
미해결스프링 핵심 원리 - 기본편
CoreApplication 작동시 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 마지막 스프링 부트 테스트에서 오류가 발생했습니다..강의 들으면서 똑같이 했는데 왜 저는 빈이 두개 나온다고 오류가 나올까요.... AppConfig.class 에서 @Configuration을 주석 처리 하면 스프링부트 테스트가 되긴 하는데 강의에서 주석처리하는걸 못봐서,,,,,어떻게 해야하는걸까요..?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MemberRepository 구현 시, findAll() 메서드 질문 드립니다.
public List<Member> findAll(){return new ArrayList<>(store.values());} 반환되는 List도 결국 인덱스에 store에 저장된 객체의 주소 값을 저장하기 때문에 해당 list를 통해서 내부 객체를 수정하게 되더라도 store내부에 있는 객체도 수정이 이루어지니깐 다를게 없다 느껴졌는데 store를 직접반환하는 것과 어떻게 다른가요?..