묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
response.sendRedirect("/basic/hello-form.html"); 코드에서 302번이확정적인지? ?
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 저가 이해 한게 맞는지 알고 싶어서 올립니다. 사진을 보시면 response.sendRedirect("/basic/hello-form.html"); 라는 코드가 있는데저가 이해한 바로는 여기 이 코드(로직) 안에 "302"이 고정 되어 있어서 302번 상태 코드를 호출 하고 폼으로 간다 라고 이해 해도 되냐요?답변 부탁드립니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
로그아웃시 서버로 전달되는 쿠키(세션ID)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]로그아웃시에 서버로 전달되는 쿠키는 브라우저가 자신에게 저장된 쿠키 값을 조회해서 HTTP 헤더에 넣은 다음 서버로 전달하는 걸까요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Content-Type에 나오는 txet/plain이 무엇인지?
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 . 굼긍즘이 생겨서 질문을 드립니다.hello.servlet.basic.response 에 있는 ResponseHeaderServlet 클래스 에서response.setHeader() 에서"Content-type","text/plain;charset=utf-8" 이렇게 입력하는 것을 보았습니다.근데 여기 입력에서 첫 번째 입력 값 text/plain 에 대해서 잘 모르겠습니다. 그래서 검색해서 찾아보니(볼로그 글을 보니) text/plain: 일반 텍스트 데이터임을 의미text/plain: 일반적인 평문의 글을 의미하며, html도 이에 해당 합니다.이렇게 두 가지 글을 찾을 수가 있었으나 뭔 말 인지 이해가 안되는 상황입니다. 혹 text/plain 에 대해서 더 자세히 알켜 주실수 있나요? 답변 부탁 드립니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
LoginCheckFilter의 sendRedirect부분에 대해 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.LoginCheckFilter의 doFilter 메서드에서 미인증 사용자의 요청일 경우 httpResponse.sendRedirect("/login?redirectURL=" + requestURI);위와 같이 리다이렉트를 해주는데 @PostMapping("/login") public String loginV4(@ModelAttribute LoginRequest loginRequest, HttpServletRequest request, @RequestParam(defaultValue = "/") String redirectURL) { log.info("redirectURL: {}", redirectURL);로그를 찍어보면 "/" 값이 넘어옵니다.여기서 궁금한게 있는데, redirect는 get요청으로 알고있는데 어떻게 Post요청이 되는지 궁금합니다.브라우저가 응답을 받아 리다이렉트 했을 때 요청받는 건 GetMapping("/login")이 아닌건가요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링부트 프로젝트를 windows로 빌드하고 실행한 이후..
[질문 내용]그 이후부터는 intellij에서 localhost:8080으로 접속이 안됩니다. 설정에서 이렇게 변경을 해도 프록시서버 설정을 바꿔야하는건지 알수가 없네요. 프로젝트 다시 만드는 방법보다 설정바꿔서 실행해보고 싶은데 어느 쪽을 변경해야하나요?
-
미해결[심화] 인디해커를 위한 루비온레일즈 8 완벽 강의
테스트 관련 내용은 없는지 궁금합니다.
레일즈는 테스트가 중요하다고 얼핏 들은거같은데 테스트 관련 내용도 강의에 포함되어 있나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
앤터티 필드 선언시 Integer 사용
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Item 클래스에서 price와 quantity의 데이터 타입을 int가 아닌 Integer로 선언하셨는데 Integer로 선언하신 이유가 궁금해요
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
welcome-page
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]보통 tomcat을 사용하면 web.xml에 welcome-page 관련한 설정을 하는 것으로 알고 있는데, 스프링부트 내장 톰캣 또한 자동으로 welcome-page가 /webapp/index.html으로 설정이 되어 있어서 index.html이 렌더링 되는지 아니면 다른 곳에 welcome-page가 설정되어 있는지 궁금하여 문의드립니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
프로젝트 오픈 에러
제공된 소스 폴더 itemservice-db-start 를 itemservice-db로 변경 후 openProject 하였더니 다음과 같은 빌드 에러가 납니다..질문 답변 봐도 별 내용 없는거로 보아 저만 이런거같은데 어떻게 해결하나요
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
콘솔창 한글 깨짐 해결법
[상황]분명 다른 강의들에선 한글 잘 나왔는데 왜 갑자기 한글이 깨질까? 달라진 점을 생각해보니 gradle로 설정을 바꾼 후로 깨진 것 같았음실제로 IntelliJ IDEA로 바꾸니까 한글 출력 잘됨.[이유]IntelliJ는 실행할 때 JVM 인코딩을 UTF-8로 설정해주지만, Gradle은 인코딩을 시스템 기본값에 맡기기 때문이라고 함 -gpt-[해결 방법]제어판 - 국가 또는 지역 - 관리자 옵션 - 시스템 로캘 변경 - Beta 체크박스 체크 후 재부팅다들 이것부터 해보시길
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
실행시 콘솔? 계속 돌아가요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]실행하게 되면 8080과 /hello같은 곳에 접속은 잘 되는데 영한님 화면과 다르게 이 실행창의 톱니바퀴가 계속 돌아가고, 밑에 ServletApplication.main()의 빌드가 되고있는 듯이 보이고, 실행 종료시에는이렇게 뜹니다.메세지:* Try:> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights.> Get more help at https://help.gradle.org.Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.For more on this, please refer to https://docs.gradle.org/8.14.2/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.BUILD FAILED in 4m 10s3 actionable tasks: 2 executed, 1 up-to-date
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 JdbcTemplate에서 H2에 테이블이 없다는 오류 발생
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
검증 실패 후 값이 빈칸인 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]@PostMapping("/add") public String addItemV1(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { //검증 오류 결과를 보관 log.info("item.price1 = {}", item.getPrice()); //검증 로직 if (!StringUtils.hasText(item.getItemName())) { bindingResult.addError(new FieldError("item","itemName","상품 이름은 필수입니다.")); } if (item.getPrice() == null || item.getPrice() < 1000 || item.getPrice() > 1000000) { bindingResult.addError(new FieldError("item","price","가격은 1,000 ~ 1,000,000 까지 허용합니다.")); } if (item.getQuantity() == null || item.getQuantity() >= 9999) { bindingResult.addError(new FieldError("item", "quantity", "수량은 최대 9,999 까지 허용합니다.")); } //특정 필드가 아닌 복합 룰 검증 if (item.getPrice() != null && item.getQuantity() != null) { int resultPrice = item.getPrice() * item.getQuantity(); if (resultPrice < 10000) { bindingResult.addError(new ObjectError("item","가격 * 수량의 합은 10,000원 이상이어야 합니다. 현재 값 = "+resultPrice)); } } //검증에 실패하면 다시 입력 폼으로 if (bindingResult.hasErrors()) { log.info("errors = {} ", bindingResult); log.info("item.price2 = {}", item.getPrice()); return "validation/v2/addForm"; } //성공 로직 Item savedItem = itemRepository.save(item); redirectAttributes.addAttribute("itemId", savedItem.getId()); redirectAttributes.addAttribute("status", true); return "redirect:/validation/v2/items/{itemId}"; }addItemV1에서 폼의 가격에 1원을 입력 후 저장했을 때 log.info("item.price1 = {}",item.getPrice()) 와 log.info("item.price2 = {}",item.getPrice())로 검증시작 전과 검증 실패 후(뷰 반환 직전)에 item.getPrice()의 값을 로그로 확인했는데, 둘다 1이 뜨더라구요.그럼 검증 실패후 뷰로 넘어갔을 때 뷰에서는 똑같이 1이 남아있어야 하는거 아닌가요? 뷰의 th:field="*{price}"는 item.getPrice()로 값을 가져오는데 왜 1이 아니라 null인건지 이해가 안됩니다..!-> 강의뒷편에 내용이 나오네요 ㅎㅎ해결했습니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
서비서 계층 스프링 프레임워크 사용
이번 강의 코드에서 서비스 계층 코드인 MemberServiceV3_1 에서 PlatformTransactionManager 같은 스프링 프레임 워크를 사용하고 있는데요,이전 강의에서 프레젠테이션 계층, 서비스 계층, 데이터 접근 계층에 대해 설명하실 때서비스 계층에서는 순수 자바 코드로 작성해야한다고 하셨는데요.MemberServiceV3_1 에서 몇몇 코드가 스프링 프레임워크인데 이런 것은 정말 필요에 의해서 사용하는 것이므로 어쩔 수 없는 부분인가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
세션 방식의 인증 과정에 궁금한점 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강의를 듣고 프로젝트 진행 도중 궁금한게 생겨 질문드립니다!현재 강사님이 알려주신대로 유저가 로그인에 성공하면 user 세션을 만들고 세션 아이디를 쿠키로 전달 하고 있습니다.이후 요청이 올때마다 인터셉터에서 세션이 있는지 user라는 세션이 있는지 확인 후 컨트롤러에 접근하도록 구현했습니다.여기서 궁금한 점이만약 유저A가 로그인에 성공한 후에 수정이나 생성 또는 그 외의 과정을 유저B의 아이디로 url 또는 요청 body에 담아 요청을 보내도 인터셉터에선 인증된 것으로 간주 되어 유저A가 유저B를 탈퇴시키는 등의 과정도 가능할거라는 생각이 들었습니다.이에 대한 해결 방안으로 user 세션의 아이디 값과 요청으로 들어온 아이디 값이 일치하는지 확인하는 로직을 필요한 모든 컨트롤러에 추가하는 것이 일반적일까요?아니라면 실무에서는 주로 어떻게 처리하는지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원관리 예제 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]5. 회원 관리 예제 - 웹MVC개발을 실습하는 과정에서,이렇게 홈 화면까지는 뜨는데,회원 가입을 누르면에러 페이지가 뜹니다.구글 드라이브 링크 첨부하겠습니다!https://drive.google.com/file/d/15PPRaCNjmwZQYFxy5s0uY_FST3DapsL4/view?usp=sharing+) 위에가 메인 질문이고 세부사항 질문이 있습니다. 1) Whitelabel 에러 페이지가 뜨는데 인텔리제이 콘솔 창에는 별도의 에러 메시지가 뜨지 않습니다.이게 콘솔창 최하단인데요. 에러메시지가 안나는게 정상인가요? 2) 위에 사진을 왼쪽에 실행목록을 보면 계속 로드중 표시 두개가 돌아가는데요. 저게 계속 돌아가더라고요. 빌드가 완료되면 초록색이 떠야되는거 아닌가 싶어서 여쭤봅니다. 웹 상에서 localhost:8080 홈페이지에 들어가지긴 합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
인텔리제이 유료버전 / 무료버전
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (모르겠어요)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]이제 백엔드 개발자로 취업한 새내기 입니다. 제가 학생이 아니라 인텔리제이 유료버전을 사용해서 스프링부트앱을 개발하고자 하는데, 너무 비싸서 회사에서 따로 결제를 해주진 않습니다..혹시 그냥 커뮤니티에디션 으로 restapi 구현하는 방식으로 회사 일에 유리하게 가져갈 수 있을까요?저희 회사는 스프링부트를 백엔드로,프론트는 jsp,jstl 사용중이라 집에서도 한번 해보고 싶은데 커뮤니티 에디션으로는 어려워서요
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
정상 응답이라는 표현 질문입니다.
강의를 보고 궁금한 점이 생겼다가 질문답변 게시판에도 유사 질문은 없는 것같아 gpt에도 물어봤지만 gpt 답변과 조금 다른 것같아 여쭈어봅니다.11:20초 즈음에 그림에서처럼 8번. 정상 응답이라고 표현을 하시는데 이것에 대한 기준?같은게 궁금합니다. 아래 코드는 강의의 try catch 코드입니다. try { if (ex instanceof IllegalArgumentException) { log.info("IllegalArgumentException resolver to 400"); response.sendError(HttpServletResponse.SC_BAD_REQUEST, ex.getMessage()); return new ModelAndView(); } } catch (IOException e) { log.error("resolver ex", e); } 먼저 예외가 발생하고 ExceptionResolver 가 넘어온 예외 해결을 시도하는데요.코드에서 sendError() 로 에러 응답의 상태 코드를 변경하고 메시지를 설정한 후 빈 ModeAndView를 반환합니다.이때 찾아본 결과 sendError() 가 있으면 응답은 내부에 완료 표시(커밋)처리를 하기 때문에 reponse에 뷰를 작성?할 수 없어 ModelAndView가 빈 값이던 뷰 값을 주던 상관 없이 뷰 렌더링이 되지 않는다고 하더군요.이부분 때문에 강의 ModelAndView 지정 부분에서 헷갈렸습니다. 이건 sendError가 없을 경우를 설명하신 것맞나요? 아무튼 본론으로 돌아와서 현재 코드와 과정처럼 최초 발생한 예외를 ExceptionResolver 에서 처리하고 DispatcherServlet로 넘어간 후 뷰 렌더링을 처리하지 못하고 WAS에 넘기는데요.이때 비록 뷰 렌더링은 하지 못했지만 ExceptionResolver 에서 상태 코드 등을 설정 후하고 ModelAndView를 반환하면서 에러를 처리하였으므로 WAS에 넘겨도 이것을 정상응답이라고 하나요? 아니면 제가 gpt에서 얻은 답변에서는 ExceptionResolver 가 예외를 처리했더라도 뷰 렌더링을 하지 못하고 WAS에 넘겼으므로 정상 응답으로 보지는 않는다고 하던데.. 정상응답의 기준이 어떻게 되나요? 좀 쓸데 없는 질문 같긴한데 ExceptionResolver 에서 ModeAndView 값 지정에 따른 반환에 대해 궁금해서 찾다가 궁금한점이 여기까지 파생되어 질문드립니다..
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
HTML Form으로 데이터 전송 시, getInputStream()과 getParameterNames() 함께 사용
getInputStream()과 getParameterNames()를 함께 사용 시, 순서 상 뒤에 있는 메서드에서는 출력이 안되는 상황을 발견했습니다저의 추측으로는 두 메서드 모두 스트림으로부터 데이터를 싹 가져와서 그런 거 같습니다테스트 해보니 getParameterValues() 메서드 역시 마찬가지고요질문1) 우선 상기 추측이 맞나요? 이번에는 getInputStream() 과 getParameter() 를 테스트 해봤습니다역시나 같은 결과였지만 한 가지 의문이 있습니다username과 age 두 가지 데이터에 대해 서버로 보냈을 때서버 측에서는 getParameter(username) 만 해도 age 에 관해서는 getInputStream() 에서 출력되지 않음을 확인했습니다질문2) getParameter() 를 최초 실행하게되면 스트림에 있는 데이터를 싹 가져와 특정 컬렉션(Map 일까요?)에 담고 이후부터는 컬렉션에서 바로 찾는 식인가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
단위테스트, 통합 테스트, 시스템 테스트...
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]제가 부트캠프에서 프로젝트를 진행할 때 테스트 코드를 짜긴 했었는데 거의 지식 없이 짰던지라 controller랑 service만 단위 테스트로 짰고 통합 테스트는 안 했습니다.단위 테스트는 class 단위 어노테이션에 SpringBootTest를 안 쓰는게 맞는건가요? 제가 그렇게 했었거든요.@SpringBootTest는 통합 테스트일 때만 쓰는 건지, 어떤 경우에 쓰는 어노테이션인 지 궁금합니다.