묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
컴포넌트 스캔 강의 @Component 붙이는 곳
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]컴포넌트 스캔 강의에서 모든 클래스에 @Component 어노테이션을 붙이지 않는데요 예를 들면 Order 클래스에는 @Component 를 붙이지 않는데모든 클래스에는 왜 안붙이고 특정 클래스에만 붙이는 건가요?그리고 어떤 클래스에 붙여야 하는건가요??
-
미해결스프링 핵심 원리 - 기본편
컴포넌트 스캔 강의와 관련해 @Autowired 사용과 의존관계 주입
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]컴포넌트 스캔 강의를 듣다가 의존관계를 주입한다고 @Autowired 어노테이션을 붙이는데 생성자에만 붙이는건가요?? 정확히 의존관계 주입이라는 개념이 뭔지를 잘 모르겠어서요ㅠㅠㅠㅠ의존관계라는게 정확히 뭘 말하는 건가요?그리고 @Autowired 어노테이션은 어디에다가 붙이는 건가요??
-
해결됨카프카 완벽 가이드 - 코어편
Kafka에 설정값이 엄청 많은데요
이직하는 회사가 Kafka 기반으로 MSA간 통신을 해서max.in.flight.~ 강의까지 열심히 듣는 중입니다 ㅎㅎ보다보니까 설정할 수 있는 영역이 엄청 많은데요~보통 실무에서 로드테스트 등을 통해서 서비스에 적합한 값을 찾아가나요?어느정도 경험이 없다면 최적의 설정값을 찾기가 어려울 것 같아서요 ㅎㅎ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-J 맞왜틀 10709
안녕하세요 예제 TC는 다 맞는데 틀리다고 나오네요..제가 생각한 풀이 방식은 탐색을 하다 구름이 아닌 경우 인덱스를 하나씩 줄이면서 구름의 위치를 찾는 식으로 풀어봤습니다.http://boj.kr/154ed80b9b0843e99513073decc1482b
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
war 파일로 tomcat 배포 방법 문의?
jar 파일이 아닌 war 파일로 빌드하여, tomcat에 배포하고 싶었습니다.tomcat 배포 방법을 알려주시면 감사하겠습니다.사실 검색하여 해보았으나, 이상하게 404 에러가 계속 나오고 있습니다. ㅜㅜintellj에서는 문제 없고, jar 파일 생성후, 실행해도 문제는 없는데, war파일을 tomcat 배포시 문제가 있습니다.강사님의 많은 경험으로, 답변 주시면 감사하겠습니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
초기화 디버깅 응용프로그램 오류
안녕하세요 강의 잘 듣고있습니다 코드를 따라 치고 실행을 시켰는데처음엔 d3d12.dll 파일이 없다고 해서 다시 다운받고 프로시저 시작지점uncaught_exceptions 가 api-ms-win-crt-private-l1-1-0.dll에서 찾을수 없다고 해서 api 파일도 다시 교체 해서 실행 시켰는데응용 프로그램 오류가 뜹니다 찾아보니 메모리 상에 문제가 있다고 나오는데 어떻게 해줘야 해결될지 감이 안잡혀서 질문을 남겨봅니다!혹시나 윈도우 7을 사용해서 나타나는 문제가 있을수도 있는지도 궁금합니다
-
미해결[입문자를 위한 UE5] Part1. 언리얼 엔진 블루프린트
키보드 이벤트에서 1키를 눌러도 아무런 반응이 없습니다.
키보드 이벤트에서 1 키를 눌러도 아무런 반응이 없습니다.컴파일, 세이브 다 했구요.branch, flip flop 강의에서부터 키보드 이벤트가 나오는데, 그대로 따라해도 1키를 누루면 아무런 반응이 없습니다.어디가 문제일까요?
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
GoRouter 프로젝트에 적용 후 질문있습니다
GoRouter 적용하는 강의 후 처음 splash screen으로 진입 후 getMe함수를 통해 state가 null이 되는 로직을 통과했음에도 router의 redirect를 따르지 않고 계속해서 splash screen에서 머무는 모습이 나타납니다. print로 결과를 확인해보니 처음 redirect 로직을 검증할 때 UserModelLoading의 Instance로 나타나고 이후 getMe를 통해 null이 되더라도 새롭게 redirection이 일어나지 않는 것 같습니다. 고민하다가 해결책이 떠오르지 않아 문의남깁니다!
-
미해결Nuxt.js 시작하기
SSR로 빌드 및 배포를 하려고하는데
HTTPS를 적용하려고 하면 어떤식으로 진행해야하나요? 아파치 서버를 따로 구동하지않고 자체적인 노드 서버로 구동하는게 맞을까요?만약 그렇다고하면 노드 서버로 구동이 되는건데 그때 ssl 적용은 어떻게 해야하는건지 궁금합니다
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
섹션 7 전달값 질문입니다!
1. 6분 44초에 int result = 1; 이라고 작성해주셨는데이 의미가 궁금합니다! (result가 무엇을 의미하는지 궁금합니당 만약 결과값이라면 왜 1을 써야 하나요?) 6분 59초에 for i 를 쓰셨는데 여기서 i는 무얼 의미하는 건지 궁금합니다!앞의 int result가 이해가 되지 않아 result = result * number;의 의미도 궁금합니다!
-
미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL 문제풀이
as 2 space-separated values. 무슨 말인가요???
-- 파파고 --> hacker_id와 이름을 2개의 공백으로 구분하여 출력합니다.제 기준에서는 공백이 1개로 보이고 복사 붙여넣기 해서 드레그해도 1개더라고요.저 조건은 그냥 가볍게 무시해도 되는건가요??아니면 제가 잘못 이해한 걸까요??
-
미해결[백문이불여일타] 데이터 분석을 위한 기초 SQL
코드 에러 이유
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. select, from, limit 다 완벽하게 작성한 것 같은데 오류가 나서 질문글 찾아보니 limit 뒤에 세미콜론을 안적어서 그렇다는데 저는 적어도 저렇게 나오는데 이유가 뭘까요?
-
미해결Java TPC 실전프로젝트 (Java API 활용)
Gson 라이브러리 추가시 오류
현재 Gson을 lib에 추가하는 초기 설정을 하고 있습니다.인터넷에 검색을 해보니이렇게 Classpath 에 넣어라고 하더라고요. 저도 그래서 동일하게 진행했는데import com.google.gson.Gson 에 마우스를 가져다대면The type com.google.gson.Gson is not accessible라고 에러가 뜹니다.그리고module-info 에 들어가면 빨간 밑줄이 있습니다.Gson 을 classpath 가 아닌 module path로 옮기면 해결되긴 합니다.classpath 로 두고 에러를 해결하려면 어떻게 해야될까요?감사합니다 :)
-
해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션8 수열추측하기 질문 있습니다.
<html> <head> <meta charset="UTF-8" /> <title>출력결과</title> </head> <body> <script> function solution(n, f) { let answer = 0 let flag = 0 let dy = Array.from({ length: 11 }, () => Array(11).fill(0)) let check = Array.from({ length: n + 1 }, () => 0) let temp = Array.from({ length: n }, () => 0) let b = Array.from({ length: n }, () => 0).map((v, i) => combination(n - 1, i)) function combination(n, r) { if (dy[n][r] > 0) return dy[n][r] if (r === 0 || n === r) return 1 return (dy[n][r] = combination(n - 1, r - 1) + combination(n - 1, r)) } function DFS(index, sum) { if (flag) return if (index === n && sum === f) { answer = temp.slice() flag = 1 } else { for (let i = 1; i <= n; i++) { if (check[i] === 1) continue temp[index] = i check[i] = 1 DFS(index + 1, sum + b[index] * temp[index]) check[i] = 0 } } } DFS(0, 0) return answer } console.log(solution(4, 68)) </script> </body> </html>선생님께서 올려주신 답안을 보면DFS 함수 안에서 수열을 만들 때 for문 조건이 i <= n 이므로 만들 수 있는 수열은 [4, 4, 4, 4]가 마지막 값일 것으로 예상됩니다.만약 문제 조건을 N=4, F=68로 바꾸면 답안 코드로는 답을 얻을 수 없습니다. N값이 가장 윗줄에 나오는 숫자의 갯수를 의미하기 때문에 가능한 조건이라 생각됩니다. 이 경우 for문 조건의 n을 더 큰 값으로 바꾸고, 강의에서 알려주신 push, pop을 이용한 코드로 작성하면 답을 얻을 수 있었습니다. 하지만 n값이 10인 경우, 11인 경우 등 n값에 따라 나올 수 있는 답이 다르기 때문에 사전순으로 가장 앞에 오는 것이 무엇인지 판별하려면 또 문제가 생깁니다. N=4, F=68의 문제 조건에서 for문의 n값이 10인 경우 답이 [3, 9, 10, 8]가 나오며, 11인 경우 [1, 8, 11, 10]이 나오기 때문에 11인 경우가 답이 되어야 할 것으로 생각됩니다.n값이 너무 커지면 실행시간이 오래걸리기 때문에 문제 조건에 맞는 적절한 값이 필요할 듯 싶은데, 이걸 잘 모르겠습니다. 제가 이해를 잘못 하였을 수도 있습니다. 선생님께서 조언해 주시면 감사하겠습니다.
-
미해결비전공자의 전공자 따라잡기 - 데이터베이스,SQL
[섹션3] 사원 테이블 데이터 추가하실 분들을 위한 쿼리문
INSERT INTO zerocho.`employee` (`name`, email, salary, team, role_id) VALUES ('제로초', 'zerocho@gmail.com', '10000', '개발팀', '1');INSERT INTO zerocho.`employee` (`name`, email, salary, team, role_id) VALUES ('원초', 'onecho@gmail.com', '6000', '디자인팀', '1');INSERT INTO zerocho.`employee` (`name`, email, salary, team, role_id) VALUES ('투초', 'twocho@gmail.com', '8000', '기획팀', '1');INSERT INTO zerocho.`employee` (`name`, email, salary, team, role_id) VALUES ('쓰리초', 'threecho@gmail.com', '7000', '기획팀', '2');INSERT INTO zerocho.`employee` (`name`, email, salary, team, role_id) VALUES ('포초', 'fourcho@gmail.com', '9000', '개발팀', '2');INSERT INTO zerocho.`employee` (`name`, email, salary, team, role_id) VALUES ('파이브초', 'fivecho@gmail.com', '6000', '기획팀', '3');INSERT INTO zerocho.`employee` (`name`, email, salary, team, role_id) VALUES ('식스초', 'sixcho@gmail.com', '6000', '개발팀', '3');INSERT INTO zerocho.`employee` (`name`, email, salary, team, role_id) VALUES ('세븐초', 'sevencho@gmail.com', '5000', '개발팀', '4');INSERT INTO zerocho.`employee` (`name`, email, salary, team, role_id) VALUES ('에잇초', 'eightcho@gmail.com', '4000', '디자인팀', '4');INSERT INTO zerocho.`employee` (`name`, email, salary, team, role_id) VALUES ('나인초', 'ninecho@gmail.com', '3000', '개발팀', '4');INSERT INTO zerocho.`employee` (`name`, email, salary, team, role_id) VALUES ('텐초', 'tencho@gmail.com', '2500', '기획팀', '5');
-
미해결
jsp, thymeleaf 동시 사용
스프링 부트에서 jsp와 thymeleaf를 어떻게 동시에 사용할 수 있는지 궁금합니다. jsp는 tiles.xml에서<definition name="*" extends="main-layout"> <put-attribute name="body" value="/WEB-INF/views/{1}.jsp"/></definition> 이런식으로 jsp파일을 읽어오는데 thymeleaf는 어떻게 하는지 모르겠습니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Many To One 매핑시 JoinColumn을 무조건 대상테이블의 PK로만 걸어야하는지
Many 쪽에서 One쪽으로 @JoinColumn을 지정하게되면 그 컬럼은 곧 FK로 사용되는데ID값이 아닌 다른 Unique한 컬럼을 참조하고 싶다면 대체하여도 상관없을까요???예를들어, 게시판에서 글 작성자를 출력한다고 가정합니다.우선적으로 필요한 값은 Nickname하나뿐입니다.User테이블에는 PK값이 자동증가값과 같은 의미없는 고유번호로 부여하고 있다고 가정합니다.Board테이블에서 User테이블의 고유값 PK가 아닌 Nickname의 값만 가져오고 싶고, 해당 값은 중복이 불가능한 Unique한 값이라면PK값이 아닌 해당 값에 걸어도 무방한지요?만약 게시판에서 닉네임뿐만 아니라 닉네임을 눌렀을때 해당 User의 다양한 정보를 얻기 위하면 PK를 가져오는게 맞다고 생각합니다. 하지만 게시판에 User의 PK값에 FK가 걸려있고(Mapping) Board에서 참조하려는 값이 '단순히 닉네임 단 하나'라고 한다면 PK값을 기준으로 닉네임을 다시 한번 조회해야 하기 때문에 불필요한 쿼리가 발생한다고 생각이 듭니다물론 닉네임으로 매핑을 하더라도 Unique한 특성때문에 닉네임 기준으로 User의 정보를 조회할 수는 있겠으나 Board테이블로부터 테이블이 지속적으로 확장되어 나가고 해당 테이블에 User의 PK가 식별관계로 상속되어나간다면 데이터베이스의 PK의 역할로 볼때는 PK로 지정해주는게 맞다고는 생각합니다...위와같이 매핑되는 FK대상 JoinColumn 필드를 비즈니스적 측면에서 유도리있게 설정해도 무관할까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
500오류 - NullPointerException
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 전송 버튼을 누르면이런 화면이 나옵니다!에러는 NullPointerException이 뜨고근데 f12를 눌러 form 태그로 전송된 데이터는 조회가 됩니다어디가 문제인 걸까요 ㅜㅜ
-
미해결스프링 핵심 원리 - 기본편
assertThat에서 타입 확인할때 인터페이스 타입, 구현체 타입 둘다 가능한가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예첫번째 그림에서빈 이름, 타입으로 조회할때, 조회된 객체는 컨테이너에 등록된 객체이고, 해당 객체의 클래스(MemberServiceImpl)를 isInstanceOf 할때 인자로 사용하신 걸로 이해했는데(당연히 맞는말인건 알고 있습니다.) 두번째 그림에서 컨테이너에 등록된 객체가 인터페이스의 인스턴스로가 맞다고도 검증이 되는데 이유가 무엇인지 궁금합니다. 그냥 인터페이스 변수에 구현 클래스의 객체가 주입될 수 있어서 인터페이스의 인스턴스로도 맞다고 하는건가요?.아래의 두 문장, 인터페이스의 인스턴스, 해당 객체의 클래스의 인스턴스, 둘다 isInstanceOf 정상 동작하는 건 확인했습니다.assertThat(memberRepository).isInstanceOf(MemoryMemberRepository.class);assertThat(memberRepository).isInstanceOf(MemberRepository.class);
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
지금까지 정리한 부분이 맞는지 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]제가 지금까지 정리한 부분인데 맞는 이야기인지 확인 및 피드백 부탁 드려도 될까요? 1. 서블릿 컨테이너에 의해 요청된 값이 담긴 Request 객체와 Response 객체가 생성됨. 생성된 Request 객체와 Response 객체는 Dispatcher Servlet의 service() 함수를 호출하면서 전달됨.2. Dispatcher Servlet가 HttpServlet의 service() 함수를 실행함으로써 Dispatcher Servlet의 핵심 로직인 doDispatch()가 호출됨.3. 구현된 HandlerMapping에서 요청 URL에 매핑된 핸들러(컨트롤러)를 찾기 시작함. 만약 핸들러에 @Controller가 적용되어 있고, 요청 URL과 매핑된 @RequestMapping 메소드가 있다면 RequestMappingHandlerMapping는 해당 핸들러를 Dispatcher Servlet에 반환됨.4. HandlerMapping은 전달받은 핸들러를 처리할 수 있는 HandlerAdapter를 조회함. 예를 들어, @RequestMapping 기반의 핸들러를 처리할 수 있는 RequestMappingHandlerAdapter를 찾음.5. HandlerAdapter는 실제 핸들러(컨트롤러)를 호출하기 전에 필요한 매개변수 정보(@RequestParam인지, @ModelAttribute인지, @RequestBody인지, HttpEntity인지)를 ArgumentResolver에 제공함.6. 핸들러 어댑터는 ArgumentResolver의 supportsParameter()를 호출하여 컨트롤러의 매개변수를 처리할 수 있는 ArgumentResolver를 찾음.7. 해당 ArgumentResolver의 resolveArgument()를 호출하여 필요한 데이터를 생성하고, 이를 HandlerAdapter에 반환함.7-1. 만약 핸들러(컨트롤러)가 메서드 레벨에서 @RequestBody, HttpEntity(RequestEntity)를 사용한다면 ArgumentResolver는 HTTP 메시지 컨버터의 canRead() 메소드를 호출하여 매개변수 타입과 미디어 타입(Content-Type)을 처리할 수 있는 HTTP 메시지 컨버터를 찾음.8. canRead() 조건을 만족하면 ArgumentResolver는 해당 HTTP 메시지 컨버터의 read()를 호출하여 필요한 데이터를 생성하고, 이를 HandlerAdapter에 반환함.9. HandlerAdapter는 생성된 파라미터의 값이 모두 준비되면 핸들러(컨트롤러)를 호출하면서 값을 넘겨주고 핸들러(컨트롤러)의 로직을 수행함.10-1. 메시지 바디에 직접 응답하지 않는 경우예를 들면 핸들러(컨트롤러)가 String 타입으로 뷰 이름을 반환하는 경우, HandlerAdapter는 ReturnValueHandler의 supportsReturnType()을 호출하여 지원하는 리턴 타입인지 확인함.지원한다면 HandlerAdapter는 해당 ReturnValueHandler의 handleReturnValue()를 호출하고 Model과 뷰 이름을 가지고 ModelView를 생성함. 그리고 이를 HandlerAdapter, Dispatcher Servlet 순으로 반환함.Dispatcher Servlet은 ModelView를 ViewResolver에 전달함.ViewResolver가 동작하고 뷰를 반환함. 그리고 Dispatcher Servlet가 Model에 담겨져 있는 뷰의 render()를 호출하면 HTML이 생성되고 이를 클라이언트에게 응답함.10-2. 메시지 바디에 직접 응답하는 경우@ResponseBody를 사용하면 뷰 템플릿 대신 HTTP 메시지에 직접 응답 데이터를 출력함.ArgumentResolver는 HTTP 메시지 컨버터의 canWrite() 메소드를 호출하여 리턴 타입과 미디어 타입(Accept-Type)을 처리할 수 있는 HTTP 메시지 컨버터를 찾음.canWrite() 조건을 만족하면 ArgumentResolver는 해당 HTTP 메시지 컨버터의 write()를 호출하여 필요한 데이터를 HTTP 응답 Body 부분에 기록함.흐름이 다시 Dispatcher Servlet으로 돌아가고, ViewResolver를 거치지 않고 바로 클라이언트에게 응답함. 감사합니다.