월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
HttpServletRequest 동일 인스턴스 질문
View 분리 - V2 강의에서 질문 사항이 있습니다.아래 MyView 객체에서 사용하는 HttpServletRequest request 라는 인자값과MemberSaveController에서 사용하는 HttpServletRequest request가 디버깅에서 확인하면 동일한 인스턴스인것으로 확인됩니다.이는 HttpServletRequest 도 서블릿 객체이고 싱글톤으로 관리되어서 동일한 인스턴스로 공유되는 것일까요?아니라면 해당 소스에서 확인할때 두개의 인스턴스가 동일한 이유가 무엇일까요?@6666번으로 동일한 인스턴스 객체였습니다.public class MyView { private String viewPath; public MyView(String viewPath) { this.viewPath = viewPath; } public void render(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request,response); } }public class MemberSaveControllerV2 implements ControllerV2 { MemberRepository memberRepository = MemberRepository.getInstance(); @Override public MyView process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); int age = Integer.parseInt(request.getParameter("age")); Member member = new Member(username,age); memberRepository.save(member); request.setAttribute("member",member); return new MyView("/WEB-INF/views/save-result.jsp"); } }
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
logging.level.org.apache.coyote.http11=debug 설정 적용이 안되는 것 같습니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.강의 내용대로 logging.level.org.apache.coyote.http11=debug 설정을 적용하였는데 콘솔에 관련 로그가 출력이 안됩니다. 스프링부트 버전업 이후에 더이상 해당 설정을 지원 안하는걸까요?스프링부트 버전 : 3.2.3패키징 : War자바 버전 : 17의존성 : 강의에 나온대로 추가했습니다빌드 및 실행, 테스트 : 인텔리제이요청 url : http://localhost:8080/hello?username=김아래는 설정 적용 후 로그 출력 사진입니다
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
터미널에서 spring 프로젝트 실행 관련 질문입니다.
tomcat 설치 후 spring 프로젝트를 터미널에서 "mvn tomcat:run" 명령어로 실행하는데,프로그램 자체는 실행되지만 웹에 접속되진 않습니다.intellij에서 tomcat server 환경에서 접속할땐 잘 실행이 되었는데,터미널에서 실행하려니 잘 되지가 않습니다.다음이 spring 웹서버 링크에 접속했을때의 에러인데, 찾아보니 "javax.servlet-api의 버전이 맞지 않아서 발생한다." 라고 하면서 <dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope></dependency>를 <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency>로 바꾸어주라는 내용을 보고 시도해보았지만 잘 되지 않았습니다.'혹시 tomcat를 켜두고 "mvn tomcat:run" 명령어로 서버를 시작해야하나?' 라는 생각을 하고선 이또한 진행해봤지만 이미 8080서버가 열려있다는 문구가 뜨면서 오히려 실행 도중에 멈추더라구요. intellij 외의 환경에서도 빌드가 가능해야할것같은데 고민입니다. Intellij에서 해당 프로젝트를 실행할때 이용한 Tomcat server의 설정을 함께 첨부합니다.
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
eofexception
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 섹션 2 헬로서블릿 강의를 듣던중 로그 출력하는 부분에서 eofexception이 떠서 질문드립니다.이쪽부분(server port 8081로 변경했습니다!)https://drive.google.com/file/d/1lxxwrNhSiYF06bRP4Ue6chq787NVAXuc/view?usp=drive_linkhttps://drive.google.com/file/d/1lxxwrNhSiYF06bRP4Ue6chq787NVAXuc/view?usp=drive_link다른 분들도 비슷한 질문이 많은 것 같아 확인해보았으나 , 잘 적용이 되지 않았습니다. implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'javax.servlet:jstl' 이 의존성을 추가해도 잘 되지않았습니다. javax->jakarta로 변경
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
public FrontControllerServletV1() {} 생성자 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] public FrontControllerServletV1() 생성자가 실행되면,생성자 내부에서 url 주소와 컨트롤러가 매핑되도록 한다는 것은 알겠습니다. 근데 해당 (기본) 생성자를 실행시키려면,어디선가 new FrontControllerServletV1(); 라는 코드를 적어줘야 하지 않나요? 아래 코드를 실행한 결과, 서버클 껐다 킬 때마다 생성자가 1회 실행되던데,왜 자동으로 1회 실행되는거죠?그 어디에도 new FrontControllerServletV1(); 라는 코드는 없는데 말입니다.
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
properties logger 사용문제
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] <스프링 3.x.x 버전을 사용하고있습니다.>강의를 잘 따라가고 있었는데 properties 부분에서 막힙니다. 왜 로그가 안뜨는지 궁금합니다.
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
FrontController View/Data Flow 관련 질문입니다.
아래 이미지는 제 식대로, FrontController에 대해서 정리하고 이해 했는데 잘 이해 한 건가요 ?
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@PathVariable 질문 입니다.
@PathVariable 어노테이션 사용 시 위와 같이 GetMapping의 {userId} 와 변수 명이 같으면name="userId" 옵션을 생략해도 된다고 말씀해주셨는데 옵션을 생략하면 500 에러가 나고,옵션을 작성해주면 성공하는데 이런 경우에는 뭐가 문제인가요?
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
jsp파일의 html 태그에 대해 궁금한 것이 있습니다.
강의록을 보면 이전의 MemberFormServlet 코드에서는 응답 메시지 상단에 <!DOCTYPE HTML>을 명시해주었는데, 왜 이번 jsp에서는 html 태그 위에 <!DOCTYPE HTML>를 명시해주지 않아도 정상적으로 동작하나요?https://developer.mozilla.org/en-US/docs/Web/HTML/Quirks_Mode_and_Standards_Mode위에서 <!DOCTYPE HTML>는 브라우저한테 어떤 document 타입을 사용하는지를 알려주기 위해 반드시 최상단에 명시해야 한다고 되어 있습니다. 만약 이것을 명시하지 않으면 quirk mode로 동작이 되서 현재 널리 채택된 full-standard mode와 다르게 렌더링될 수 있다고 되어있습니다.
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
WebMvcConfigurer에 대해서 궁금합니다.
@Configuration @RequiredArgsConstructor public class WebMvcConfig implements WebMvcConfigurer { private final AppConfig appConfig; @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) { resolvers.add(new AuthResolver(appConfig)); } }안녕하세요 제가 지금 프로젝트를 하나 하고있는데요이 코드에서resolver.add()를 하면 어떻게 되는건지 궁금합니다.AuthResolver에 대한 의존성을 추가해주는 코드인가요?resolvers.add()의 동작방식이 궁금합니다.그리고 resolver의 정확한 의미가 뭔지 궁금합니다
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
섹션4_Model추가 V3 강의 질문 입니다.
섹션4_Model추가 V3 강의 내용 중FrontControllerServletV3 클레스 에서 해당 render 메서드의 파라미터 mv.getModel()에는 createParamMap 메서드에서 만들어진 paramMap? 즉 key, value로 생성된 모든 request 값이 들어가고, view.render(mv.getModel(), request, response); 메서드 내부에 modelToRequestAttribute 메서드는 위에서 넘겨준 paramMap을 다시 request에 새팅해주는게 맞나요? 어질 어질 하네요.. ㅜㅜ
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
was 장애 시, 기본 에러페이지를 커스텀 가능한가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요.해당 영상을 보고 나서 개발 하는 중 궁금점이 생겨 질문드립니다.WAS가 죽으면(=서버가 과부하가 되거나 어떤 요인에 의해 다운될 경우) WAS가 표출해주는 에러페이지를 보여주지 못하고 (templates 파일은 내부적으로 was만 접근 가능하기 때문)톰캣에 기본 내장된 에러페이지를 보여준다라고 이해했습니다.이 때, 톰캣이 보여주는 내장된 에러페이지는 에러코드 및 톰캣 버전 등 정보를 가지고 있어 보안상 위험하다고 판단이 되었습니다.이러한 경우 정적 소스를 처리할 수 있는 web server에서 개발자가 커스텀한 에러페이지를 표출할 수 있도록 해야 될 거 같은데, 이게 가능한지 , 어떻게 설정을 해야하는지 궁금합니다.또한 불가능하다면 어떤 다른 방식으로 위의 문제점을 해결하는지 궁금합니다. 감사합니다.
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
test 실행이 안됩니다
에러문구는 이렇게 뜨고build.gradle은 이렇게 되어있습니다 여기 문제인거 같은데 방법을 못찾겠네요
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
forward 흐름을 제가 생각한게 맞는지 궁금합니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@WebServlet(name = "mvcMemberServlet", urlPatterns = "/servlet-mvc/members/save") public class MvcMemberServlet extends HttpServlet { private MemberRepository memberRepository = MemberRepository.getInstance(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); int age = Integer.parseInt(request.getParameter("age")); Member member = new Member(username, age); memberRepository.save(member); //Model에 데이터를 보관. request.setAttribute("member", member); String viewPath = "/WEB-INF/views/save-result.jsp"; RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request,response); //-> 요청의 제어권을 save-result.jsp에게 넘김 즉 요청의 흐름이 넘어감 } }그러고 나서 jsp로 흐름이 넘어오고<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> 성공 <ul> <%-- 이 부분을 request에 저장된 member 파라미터를 통해 값을 넣고--%> <li>id=${member.id}</li> <li>username=${member.username}</li> <li>age=${member.age}</li> </ul> <a href="/index.html">메인</a> </body> </html> <%--이 부분에서 최종적으로 브라우저에게 응답이 나간다.--%>이렇게 이해했는데 맞을까요 ..?맞다면 처음 클라이언트의 요청을 받은건 서블릿이고 최종 응답을 해준것은 jsp인가요?
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
StringHttpMessageConverter가 사용될 때의 미디어 타입
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]위 사진에서 StringHttpMessageConverter의 경우미디어 타입은 별/별이라 써져 있고, 쓰기 미디어 타입은 text/plain이라고 나와 있습니다. 저는 처음에 위 부분을 다음처럼 이해했었습니다.StringHttpMessageConverter가 요청을 받을 때 사용되는 경우(파라미터가 String인 경우) 요청 메시지의 Content-Type이 무엇이든 상관없다. StringHttpMessageConverter가 응답할 때 사용될 경우에도(리턴 타입이 String인 경우) 요청 메시지의 Accept가 무엇이든 상관없다.StringHttpMessageConverter가 응답할 때 사용될 경우(리턴 타입이 String인 경우) 요청 메시지의 Accept가 특정한 거로 지정되어 있지 않다면 응답 메시지의 Content-Type이 text/plain으로 되지만, Accept가 지정되어 있다면 그에 맞는 미디어 타입(application/json 등)으로 나갈 수 있다.원래 이렇게 생각했었는데, 다시 보니 pdf에 별/별이라고 되어 있는 미디어 타입은 요청 미디어 타입에 한정해서 써져 있는 건가?싶기도 해서 헷갈립니다. 그렇게 다시 해석한다면 StringHttpMessageConverter가 요청을 받을 때 사용되는 경우(파라미터가 String인 경우) 요청 메시지의 Content-Type은 아무 거나 상관없다. StringHttpMessageConverter가 응답할 때 사용될 경우(리턴 타입이 String인 경우) 요청 메시지의 Accept는 text/plain(혹은 이걸 포함한 별/별)이어야 하며 다른 미디어 타입은 허용하지 않는다. 전자와 후자 중 어떤 게 맞나요? 혹은 제가 쓴 양쪽 내용 다 잘못된 내용을 포함한다면 무엇인지 궁금합니다. 저는 전자일 것 같기는 합니다. 이전에 produces 관련 코드를 작성할 때 String으로 반환하는데도 produces = "text/plain"이 아닌 produces = "text/html"로 썼기 때문에요. 그런데 확신이 안 들어서 질문드립니다.
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
모델을 나눈이유는 테스트 때문인가요?
모델을 따로 분리한 이유를 request, response를 안쓰는 컨트롤러가 있어서 라고 말씀하셨는데request를 안쓰는 컨트롤러는 Map도 안쓰고파라미터 -> 맵 -> 파라미터로 다시 바꿔야 하는 수고로움도 있는데 v3로 만든 이유는 나중에 스프링 mvc에서 모델을 친숙하게 하기 위해서 일부로 만든건가요? 아니면 테스트 코드를 쉽게 만들기 위해서 만든건가요?
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Dispatcher과 웹 mvc의 동작 과정 질문 있습니다,
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]질문1.DispatcherServlet는 따로 프레임워크에서 구현하지 않아도 되나요? 예를 들어, 1)DispatcherServlet이 모든 웹 브라우저로부터의 요청을 받는다.2)DispatcherServlet은 HandlerMapping으로 부터 주어진 request를 처리할 수 있는 Handler객체를 가져온다. 이렇다면, 사용자가 따로 DispatcherServlet를 구현할 필요 없이 스프링 프레임워크 자체에서 DispatcherServlet를 구현 + HandlerMapping을 받을 클래스들을 빈으로 만들어서 관리함.그래서 @RequsetMapping 같은 URL 요청이 들어오면 해당되는 클래스에게 요청을 넘긴다.이렇게 이해하면 옳게 이해한 것이 맞나요? 질문 2.저는 아래와 같이 웹 MVC 동작 과정을 이해 했습니다. 옳게 이해한 것이 맞나요?1.클라이언트가 서버에 요청을 하면 DispatcherServlet 클래스가 요청을 받음2.@Controller 어노테이션을 이용해 빈으로 등록한 컨트롤러를 찾아 매핑된 컨트롤러가 존재하면 @RequestMapping을 통해 요청을 처리할 메소드로 이동함.3.컨트롤러는 해당 요청을 처리할 @Service 클래스를 찾아 로직을 수행함.4.서비스는 DB에 접근하여 요청을 수행하고 DTO를 통해 데이터를 컨트롤러에게 전달한다. 5.그 후 컨트롤러는 DTO를 통해 받은 데이터를 DispatcherServlet에게 다시 전달하고, DispatcherServlet는 응답과 함께 URL(view)를 반환해준다. 질문 3제가 위와 같이 이해를 했을 때, DTO가 Model이라고 이해를 하면 되는건가요? 감사합니다.
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
뷰라는 용어의 범위에 대하여 + 강의 자료 @PathVariable 오타
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의 내용들을 보다 보면 '뷰'라는 용어가 View 클래스를 상속받은, 예를 들어 ThymeleafView 클래스의 객체 등을 뜻하는 것 같기도 하고, 가끔은 templates 디렉터리의 하위에 있는 hello.html 같은 뷰 템플릿들을 뷰라고 말씀하시는 것 같기도 했는데 맞나요? 제가 헷갈렸던 건지 모르겠네요.. 뷰라는 용어의 범위를 넓게 생각해도 될까요? 아래는 오타인 것 같아서 제보합니다.6. 스프링 MVC - 기본 기능(v20231202).pdf 24페이지에 있는 @PathVariable 관련 내용인데 @RequestParam 코드가 있습니다.
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
7강 웹페이지 만들기 질문(item-service)
본 강의 마지막 편인 웹 페이지 만들기에서 잘 되다가 addForm(상품등록)부터 white page에러가 뜨면서 안들어가집니다. 강의를 보고 다시 확인도 해봤는데 같은 부분에서 오류가 나서 접속이 안됩니다. 에러로 보아 addForm에 문제가 있는 것 같은데 도무지 오류를 찾을 수가 없어 질문 남깁니다. 구글 드라이브에 파일 압축해서 올려놓았습니다. https://drive.google.com/file/d/1Sq8rgY-2ZwPEoD8KaAeIfdXAPPJ-9NsT/view?usp=drive_link
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
웹 mvc패턴을 활용해 view에서 성공적으로 반환된 데이터를 다시 가지고와서 다른view에 뿌려줄 수 있나요??
자바 스프링부트를 사용하여 // API 호출 $.ajax({ url: /dataclick?inpuDate=${targetDate}, method: 'GET', headers: { 'Accept': 'application/json', 'Authorization': Bearer ${token}, 'Content-Type': 'application/json', }, success: function (data) { console.log('받은 데이터:', JSON.stringify(data)); // editPage로 이동 window.location.href = '/editPage'; }, error: function (error) { console.error('데이터 불러오기 실패:', error); } });제가 달력에서 선택한 날짜의 데이터를 성공적으로 받아와서 그성공적으로 받은 데이터를 editPage에 뿌리고싶어요 근데 mvc패턴을 사용해야하니 받아온데이터를 dto에 또 담아서 쓰고싶은건데 어떤식으로 작성해야할까요?스프링 부트 고수님들 도와주세요