묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
변수명 일괄변경
변수명 일괄 변경을 위해 shift+enter , shift+f6 둘다 아무 반응이 없습니다...ㅠㅠㅠㅠㅠㅠ...맥북입니다
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
부모클래스 변수로 자식클래스 인스턴스 받기
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.강사님은MemberRepository memberRepository = new MemoryMemberRepository();또는List<Member> result = new ArrayList<>(); 와 같이인스턴스를 받는 변수의 class 타입을 부모 클래스로 하시는데 이건 특별한 이유가 있는건가요? 아니면 코딩 스타일상 선호해서 부모 클래스 변수를 사용하시나요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JPA 테스트하는 과정에서 질문드립니다!
JPA 강의 17:36에서 콘솔 창에 values 값으로 null 이 들어가게 되는데, 제 출력 화면에는default 값이 나옵니다.문제 없는 결과일까요??
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
예외는 언제 어디서 왜 발생 시켜야하는건가요?
게시판을 만들다보니 이러한 의문이 생겼습니다. '내가 지금 여기서 throw new MyException() 을 적는게 맞나?'저는 예외를 요청에 대한 결과가 정상적이지 않을때 혹은 데이터베이스에 값이 들어가지 않을때 발생시키고 있습니다하지만 이러한 작업들은 if만 사용해도 충분히 가능하기때문에 어느것까지 로직을 통해 처리하고 또 어디부터 예외를 던지는지에 대한 생각이 들었습니다
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
@RequestParam("name")
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.MVC 강의를 듣다가 궁금한 부분이 생겨서 질문남깁니다.public String helloMvc(@RequestParam("name") String name, Model model) 에서 @RequestParam("name")를 없애고 서버를 켰습니다. 그랫더니이렇게 화면이 나오는데요. @RequestParam("name")가 없어도 파라미터를 잘 넘겨받는 것 처럼 보이는데, 이게 왜 필요한 건가요? 단순히 requried=true를 강제하기 위해 사용하는 건가요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
libs파일이 없네요...
[질문 내용]gradle환경 만드는 과정에서 말씀해주신 대로 윈도우 환경에서 gradle.build를 하여서build successful이 나왔는데, 자꾸 cd build에 있는 libs파일이 없다고 나오네요. 실제로 들어가보니 libs파일이 없는데재 설치해도 마찬가지입니다. 환경변수 모두 java11로 되어있고 모든 setting이 java11로 되어있는데도 에러가 나니, 다음 과정으로 넘어갈 수가 없네요..
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
실무 적용 방법 질문
이 수업에서 배운 방법을 프로젝트에 적용려고 합니다.item이라는 도메인에UploadFile 타입으로 두가지 필드를 생성하고 싶은데이런경우에 연관관계 매핑을 어떻게 해야하는지 궁금합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
404에러
강사님과 똑같이 했는데 저는 404에러가 났습니다.신기한건 url창에서 jsessionid값을 지우고 실행하니까 정상적으로 들어가졌는데 왜그런 걸까요? 그리고 tracking-mode=cookie를 설정하니 url창에 jsessionid값이 나오지 않으면서 정상적으로 들어가졌습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
HTML 질문드립니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. 강의 내용을 보면 영한님께서 직접 html을 작성하지는 않지만, html 내용이 종종 나오는데 그럼 스프링 강의를 학습하기전에 html도 먼저 학습을 한후에 진행해야할까요??
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
input type name = name이 MemberForm에 String name 객체에 왜 주입되는지 모르겠습니다.
input type name 에 "name"이랑 일치하는 이름을 가진 객체한테 스프링이 주입해주는 건가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
requestBodyJsonV3 @RequestBody생략시
[질문 내용]9:30 영한님 말씀 -> requestBodyJsonV3에서 @RequestBody를 생략하면 @ModelAttribute가 적용되고 HelloData에서 setter을 찾으려고 하는데 없어서 값이 세팅이 안된 것위 글에서 이해되지 않는 부분이 있어서 질문드립니다.제 생각에는@ModelAttribute가 프로퍼티를 찾음 -> HelloData 클래스에 @Data 가 적용되어있어서 set, get 존재한다고 생각하는데요 그렇지만 쿼리파라미터 방식 등의 요청이 아니기 때문에 어떤 값을 넣을지 몰라서 값을 넣지 못한다고 고민해봤습니다.설명해주시면 감사하겠습니다 ㅠㅠ
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
등록한 필터와 인터셉터가 싱글톤으로 관리되는 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.pdf를 보면 이렇게 써있습니다.필터 인터페이스를 구현하고 등록하면 서블릿 컨테이너가 필터를 싱글톤 객체로 생성하고, 관리한다.LogInterceptor 도 싱글톤 처럼 사용되기 때문에 맴버변수를 사용하면 위험하다. Q1. 필터의 경우 싱글톤 객체로 생성되고 관리되는 이유가 WebConfig 클래스에 @Configuration 애노테이션을 적용했기 때문이 맞는지 궁금합니다.즉, WebConfig 클래스에서 @Bean이 붙은 메소드가 반환하는 객체(해당 필터)가 빈으로 등록되는데, @Configuration 애노테이션으로 인해 싱글톤 객체로 관리되기 때문인가요? Q2. 인터셉터의 경우는 어떤 이유로 인해 싱글톤처럼 사용되는 것인가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
스프링MVC의 객체지향 개념이 궁금합니다
안녕하세요 frontcontroller를 배우고 한번 만들어 봤는데 제가 만든 adapter에는 원래는 똑같이 만들어볼라 했는데 어쩌다 보니 adapter에 viewresolver를 달아서 myView객체를 반환하는 adapter를 만들었습니다. 여기서 의문이 생겼는데 adapter에 viewresolver를 다는 것이나 frontcontroller에 viewresolver를 다는 것이나 myView를 통한 기능은 동일했는데 제가 만든 컨트롤러 버전에서는 adapter가 좀 더 많은 기능을 담당하게 되었습니다. 객체 지향 설계를 할 때 객체마다 각자의 역할을 부여해서 조립식으로 만든다 했는데 어느 정도까지 역할을 분해하는 것이 좋은 것인가요? 혼자 생각해 보려고 했는데 피드백을 좀 받고 싶어서 질문드렸습니다. 감사합니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
<html xmlns:th="http://www.thymeleaf.org">
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]<html xmlns:th="http://www.thymeleaf.org"> 을 인식하지 못한다고 나옵니다! 어떤식으로 해결해야 할까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
로그인 시 GetMapping에 @ModelAttribute를 넣어주는이유
안녕하세요 로그인 기능 작성할 때 GetMapping에서도 ModelAttribute를 넣어주는 이유가 혹시 thymeleaf작성시 th:object=${loginForm}을 넣어주기 위해서 작성하는건가요..?? 이 부분이 궁금하여 질문드립니다. 감사합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원서비스테스트 12분 58초 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]제가 자바코드에 대한 이해가 깊지 않은 상태에서 수강 중입니다. 제 논리에 이해되지 않는 부분이 있어서 질문드립니다.강의 중 코드 16줄에서 memberService를 새로 만들었습니다. 그럼 memberService 안에 그 만의 memberRepository 가 생긴다고 생각했습니다.그런데, clear를 위해 17줄에서 새로운 memberRepository를 만들고 있습니다. 이 memberRepository는 memberService 안의 memberRepository와 다른 것이지 않나요?? 이 memberRepository를 clear하는 게 memberService의 memberRepository를 clear하는 행위가 아니라고 생각합니다.제 부족함을 채워주시면 감사하겠습니다. 혹시 memberService가 static이라 모두 같은 객체를 공유하는 건가요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
터미널 다시 시작
터미널을 껐다가 다시 켜서 4분 49초처럼 ll하고 치면 localhost:8082가 종료되면서 끊기는데 터미널을 끄고 다시 실행해서 명령어를 치는 게 아닌가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
@Transactional 어노테이션만 붙이면 에러가 뜨네요.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.문제 : @Transactional 를 주석처리하면 정상적으로 회원가입이 되서 h2 DB에 입력됩니다...그런데 다시 DB데이터 삭제 하고 @Transactional 어노테이션 설정을하면 아래와같이java.lang.IllegalStateException: java.sql.SQLException: Connection is closed뜹니다.. 정상적으로 지금까지 다된거같은데 갑자기 이러네요.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
자바11
[질문 내용]제가 학원 수업에서 사용하는 버전과 이 수업에서 사용하는 버전이 다른데 이럴때는 어떻게 해야하나요???
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
argument resolver로 InputStream만 받을 경우 오류 발생
[질문 내용]@PostMapping("/request-body-string-v2") public void requestBodyStringV2(InputStream inputStream) throws IOException { String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8); log.info("messageBody = {}", messageBody); } HTTP 요청 메시지 - 단순 텍스트 강의에서v2를 똑같이 따라서 작성하다가 제가 Writer는 생략하고 inputStream만 받아서 바이트 코드를 String 값으로 변환한 뒤 로그 출력만 하려 했는데 inputStream만 받고 포스트맨으로 v2 url에 post로 요청을 보냈더니 에러가 발생했습니다. 아무리 생각해 봐도 writer를 뺀 것 말고는 다 똑같아서 에러가 날 이유가 없다고 생각했는데, 이상하게 에러가 발생했습니다. 그래서 혹시나 하는 마음에 영상과 완전히 똑같이 Writer를 넣어서 서버를 다시 시작하고 요청을 보냈더니 제대로 작동했습니다.이상한 건, writer 뿐만 아니라 다른 아무 argument resolver에 등록된 객체를 함께 받으면 문제 없이 동작한다는 것이었습니다. 에러 내용을 확인해 보니 타임리프 템플릿 오류인 것 같은데 inputStream이랑 관련이 없어 보여서 어느 부분이 문제인 지 알 수가 없었습니다..ㅠinputStream을 단일로 받으면 문제가 있는 것인 지 질문 남겨봅니다! 밑은 에러 내용입니다.org.thymeleaf.exceptions.TemplateInputException: Error resolving template [request-body-string-v2], template might not exist or might not be accessible by any of the configured Template Resolversat org.thymeleaf.engine.TemplateManager.resolveTemplate(TemplateManager.java:869) ~[thymeleaf-3.0.15.RELEASE.jar:3.0.15.RELEASE]at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:607) ~[thymeleaf-3.0.15.RELEASE.jar:3.0.15.RELEASE]at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1098) ~[thymeleaf-3.0.15.RELEASE.jar:3.0.15.RELEASE]at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1072) ~[thymeleaf-3.0.15.RELEASE.jar:3.0.15.RELEASE]at org.thymeleaf.spring5.view.ThymeleafView.renderFragment(ThymeleafView.java:366) ~[thymeleaf-spring5-3.0.15.RELEASE.jar:3.0.15.RELEASE]at org.thymeleaf.spring5.view.ThymeleafView.render(ThymeleafView.java:190) ~[thymeleaf-spring5-3.0.15.RELEASE.jar:3.0.15.RELEASE]at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1405) ~[spring-webmvc-5.3.23.jar:5.3.23]at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1149) ~[spring-webmvc-5.3.23.jar:5.3.23]at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1088) ~[spring-webmvc-5.3.23.jar:5.3.23]at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.23.jar:5.3.23]at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.23.jar:5.3.23]at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.23.jar:5.3.23]at javax.servlet.http.HttpServlet.service(HttpServlet.java:681) ~[tomcat-embed-core-9.0.65.jar:4.0.FR]at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.23.jar:5.3.23]at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.65.jar:4.0.FR]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.65.jar:9.0.65]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.23.jar:5.3.23]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.23.jar:5.3.23]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.23.jar:5.3.23]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.65.jar:9.0.65]at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.65.jar:9.0.65]