묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링부트 버전, 자바 버전
스프링부트 버전이 현재 2버전은 2.7.8밖에 없는데 자바11로 다운 받았으니 3버전 안하고 2.7.8로 하고 나머진 강의 그대로 해도 될까요??현재 화면입니다. 이렇게 설정해도 문제없는지 질문드립니다. 자주하는 질문에 보니 스프링부트 3버전부터는 Java17이상을 다운받아야한다고 나와있는데, 원래 Java19가 있는데 지웠다 11로 다시 설치한 상태라 컴퓨터에 Java여러 버전이 제대로 지워지지 않으면 오류가 날까봐 있는 버전으로 가능할지 질문드립니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
http://localhost:8080/hello-mvc?name=spring! 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 똑같이 했는데오류가 나옵니다 ..ㅜㅜ
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Bean으로 등록하지 않고, Servlet의 Filter를 사용하는 방법은 무엇인가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]영상을 보면 Filter를 사용하기 위해 아래와 같이 스프링 컨테이너에 Bean 등록하는 것을 볼 수 있습니다.@Bean public FilterRegistrationBean logFilter() { FilterRegistrationBean<Filter> filterRegistrationBean = new FilterRegistrationBean<>(); filterRegistrationBean.setFilter(new LogFilter()); filterRegistrationBean.setOrder(1); filterRegistrationBean.addUrlPatterns("/*"); return filterRegistrationBean; }근데 사실 의문인 부분이 있습니다.Filter는 Servlet 기술이기 때문에, Spring이 없어도 동작할 수 있어야 합니다.그래서 검색을 해봤죠. 보통 Servlet의 필터는 어떻게 사용하는지 아래와 같이 web.xml 에 등록해서 사용하더군요. <filter> <filter-name>filter1</filter-name> <filter-class>com.app.GFGFilter</filter-class> </filter> <filter-mapping> <filter-name>filter1</filter-name> <url-pattern>/GFGServlet</url-pattern> </filter-mapping>xml을 사용하는 것 보니까 Maven을 사용할 때 방식인 것 같은데요. Gradle을 사용할 때는 어떻게 설정해줘야 Filter를 사용할 수 있죠? Bean으로 등록하지 않고 사용하는 방법이 궁금합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
3시간동안 했는데 해결이 안됩니다.. 도와주세요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]데이터 베이스를 찾을수 없다고 합니다.프로젝트도 2번이나 새로 만들어 봤고 강의 보면서 다른게 있나 확인도 해봤는데 계속 안됩니다. DB의 문제일까요? org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'springConfig' defined in file [C:\class\code\springboot\hello-spring2\bin\main\com\spring2\SpringConfig.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: org.h2.Driver at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:229) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1372) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1222) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.25.jar:5.3.25] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.25.jar:5.3.25] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) ~[spring-boot-2.7.8.jar:2.7.8] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731) ~[spring-boot-2.7.8.jar:2.7.8] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) ~[spring-boot-2.7.8.jar:2.7.8] at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) ~[spring-boot-2.7.8.jar:2.7.8] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) ~[spring-boot-2.7.8.jar:2.7.8] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) ~[spring-boot-2.7.8.jar:2.7.8] at com.spring2.HelloSpring2Application.main(HelloSpring2Application.java:10) ~[main/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-2.7.8.jar:2.7.8]Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: org.h2.Driver at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:638) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:887) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) ~[spring-beans-5.3.25.jar:5.3.25] ... 24 common frames omittedCaused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: org.h2.Driver at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.3.25.jar:5.3.25] at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-5.3.25.jar:5.3.25] ... 38 common frames omittedCaused by: java.lang.IllegalStateException: Cannot load driver class: org.h2.Driver at org.springframework.util.Assert.state(Assert.java:97) ~[spring-core-5.3.25.jar:5.3.25] at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.determineDriverClassName(DataSourceProperties.java:171) ~[spring-boot-autoconfigure-2.7.8.jar:2.7.8] at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.initializeDataSourceBuilder(DataSourceProperties.java:123) ~[spring-boot-autoconfigure-2.7.8.jar:2.7.8] at org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration.createDataSource(DataSourceConfiguration.java:48) ~[spring-boot-autoconfigure-2.7.8.jar:2.7.8] at org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari.dataSource(DataSourceConfiguration.java:90) ~[spring-boot-autoconfigure-2.7.8.jar:2.7.8] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.3.25.jar:5.3.25] ... 39 common frames omitted이렇게 에러가 나오고 h2도 실행시킨 상태에서 했는데 원인을 모르겠습니다..
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Bean validation은 메세지 컨버터에도 적용할 수 있다
생각해보니 이전까지 유효성검사는 modelAttribute이 붙은 객체에 대해서만 했었네요modelAttibute나 requestbody나 둘다 객체가 들어오니까 유효성 검사가 될수밖에없는거아닌가요??왜 아래와 같은 말을 하신거죠?"메세지 컨버터를 사용하는 requestBody에도 적용할수있다" < 이말은 적용안될것같은데 적용된다! 이런얘기잖아요.. 뭔 생각을 하면 적용이 안되는거아닌가? 이런생각을 하게 되는거죠?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
http 메소드 GET, POST 관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]저는 /new-form에서 POST요청이 들어오면 post를 처리하고 /save로 GET을 요청한다고 생각했습니다. (/new-form 페이지에서 전송을 누르고, new-form.jsp를 보면 form의 메소드 형식이 post이기 때문에 POST 요청이 들어오는 페이지는 /new-form이고 action ="save"이기 때문에 GET을 통한 /save로 이동이라 생각합니다.) 혹시 이 부분을 설명해주실 수 있을까요? ㅠㅠ 그래서 위 사진처럼 코드를 작성해보았는데 문제없이 작동합니다. 괜찮은 건가요?
-
미해결스프링 부트 웹 개발 입문 - 따라하며 배우기
No1 출력
No2만 출력이 되는데 No1은 왜 출력이 안되는지 알수 잇을까요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
프로퍼티 관련하여 질문있습니다!
HelloData 클래스에 @Data 애노테이션은 빼고, 모든 필드를 매개변수로 받는 생성자만 추가하여도 바인딩이 잘 되는 것을 확인했습니다.setter가 없어도 바인딩이 되는 것은 스프링이 내부에서 더 섬세하기 처리하기 때문에 바인딩이 되는 것인가요??
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
안녕하세요. 질문 있습니다.
타임리프로 받을 때 model에 넣어준 키-값이랑 errors를 키 값으로 받으셔서 뷰를 구성하시는데 자바스크립트에서 ajax로 컨트롤러 호출해도 똑같이 errors 키값을 입력해서 사용하면 에러 메시지 처리를 똑같이 가져와서 사용가능한걸까요??
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
타임리프
타임리프를 사용해서 코드를 많이 단축할수 있었는데만약 실무에서 타임리프를 안쓴다면 처음 코드를 모두 구현해야하나요? 아니면 또다른 방법이 있나요?대부분 타임리프를 쓰는지도 궁금합니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
rejectedValue 질문
안녕하세요. 강의 너무 잘 듣고 있습니다.다름이 아니라 bindingResult.rejectValue를 공부하면서의문이 생겼는데요.이 bindingResult.rejectValue가 결국 new FieldError와 같고new FieldError("item", "itemName", null, false, ...);로 들어간다고 하셨는데 3번째 인자에 rejectedValue가 null이라면 오류가 났을 경우 사용자가 입력한 값이복구가 안되고 사라지는 것이 아닌가요?뒤에서 실행한 결과로는 값이 모두 유지되어서 의문이 들었습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 빈(Bean) 개념 관련 질문
스프링 bean 관련 공부를 하던중 구글링을 통해 정리를 해보려 했지만 헷갈려서 질문드립니다.spring container가 빈을 생성하고 생성자가 여러차례 호출되어도 실제로 생성되는 객체는 하나이며 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 가르킨다고 알고있는 상태입니다.제가 알고 있는 부분이 맞는지 그러면 test class에서 @beforeEach에 객체를 테스트 실행전 매번 새로 생성하는데 이것은 사실 결국은 하나의 최초객체를 가르킨다는 얘기인가요???
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Spring 초기 생성에서 버전이 강의와 다릅니다.
현재 https://start.spring.io/ 에 접속하며 나오는 버전입니다.강의에서는 2.3.x 버전인데 여기서는 없어서 2.7.8 로 진행했습니다.이대로 진행해도 문제 없을까요?아니면 여기서 spring boot 버전을 따로 설정하는 방법이 있나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@ModelAttribute로 받은 객체의 API 예외 처리
안녕하세요. @ControllerAdvice로 예외처리를 하는 부분에서 궁금증이 생겨 질문남기게 되었습니다.@RequestBody를 통해 값을 받는 요청들은@ExceptionHandler(MethodArgumentNotValidException.class) 설정을 통해서 예외처리를 할 수 있는데, @ModelAttribute를 통해서 값을 받는 요청들은 ControllerAdvice에서 어떠한 Exception을 통해 걸러서 예외처리를 해야하는지 감이 잡히지 않습니다.@ModelAttribute를 통해 값을 받는 경우 어떠한 방식으로 공통예외처리를 할 수 있는 걸까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
인텔리제이 실행이안되요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]갑자기 화면에 저것만 계속뜨고 실행되지않아요,, 지우고 깔아봤는데도..
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
th:value="${region.key}" 질문
안녕하세요. 강의 잘 듣고 있습니다. addForm.html을 공부하다가이 부분에서 궁금한 점이 생겼는데요.th:field는 id, name, value를 채워주니까th:value= "${region.key}" 를 지우고 실행해보니아예 화면 자체가 오류창으로 나오더라구요.위에 체크박스를 공부했을 때는 자동으로 value = "true"가 들어가던데 여기서는 왜 문제가 생기는건가요?추가로 checkbox는 value값과 상관없이선택이 되면 regions=on 이렇게 가야하는 것 같은데여기서는 왜 value값이 대입이 되어서regions=SEOUL, regions=BUSAN 이렇게 들어가는지 헷갈리네요 ㅠ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
MemberRepository save 반환타입
안녕하세요강의를 복습하다가 궁금한 점이 생겨서 질문 남깁니다!MemberRepository 클래스에서 저장소에 저장하는 메서드의 반환타입이 Member일 필요가 있나요?Map 에 put 만 하면 저장소의 기능은 끝난다고 생각하고, 강의에서도 save의 반환타입을 이용하지 않는것 같아서요감사합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
hellospringapplication 실행이 안됩니다
다른 분이 같은 질문을 남기신 걸 보고 file - invalidate caches 항목을 실행하고난 화면인데 뭐가 문제일까요 ㅠㅠ 자바는 버전 17이고 스프링은 3.0.2 버전입니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@PathVariable 이 어떻게 매칭되는지 모르겠습니다..
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네[질문 내용]여기에 질문 내용을 남겨주세요.<tr th:each="item : ${items}"> <td><a href="item.html" th:href="@{/basic/items/{itemId}(itemId=${item.id})}" th:text="${item.id}">회원id</a></td> <td><a href="item.html" th:href="@{|/basic/items/${item.id}|}" th:text="${item.itemName}">상품명</a></td> <td th:text="${item.price}">10000</td> <td th:text="${item.quantity}">10</td> </tr>package hello.itemservice.web.basic; import hello.itemservice.domain.item.Item; import hello.itemservice.domain.item.ItemRepository; import jakarta.annotation.PostConstruct; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import java.util.List; @Controller @RequestMapping("/basic/items") @RequiredArgsConstructor public class BasicItemController { private final ItemRepository itemRepository; @GetMapping public String items(Model model) { List<Item> items = itemRepository.findAll(); model.addAttribute("items", items); return "basic/items"; } @GetMapping("/{itemId}") public String item(@PathVariable Long itemId, Model model) { Item item = itemRepository.findById(itemId); model.addAttribute("item", item); return "basic/item"; } /** * 테스트용 데이터 추가 */ @PostConstruct public void init() { itemRepository.save(new Item("itemA", 10000, 10)); itemRepository.save(new Item("itemB", 20000, 20)); } } 여기서"@{/basic/items/{itemId}(itemId=${item.id})}"{itemId} 이 변수명? 키값? 같은게 넘어가서 @RequestMapping("/basic/items") 컨트롤러로 넘어가고 @GetMapping("/{itemId}") 이쪽으로 들어가는거 로이해했는데요 "@{|/basic/items/${item.id}|}"리터럴 대체는 item.id 이렇게 이름이 넘어가는 거 같은데 여기선 변수명? 같은 매칭될만한게 안보이는데 어떻게 알고 찾아 들어가는건가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
th:action
아래는 customer/createCustomer.html 일부입니다.강의를 듣고 th:action 을 적용시켜봤는데요1.controller-> getmapping / postmapping 모두같은 url 로 설정2.customer/createCustomer.html -> th:action 기입두 조건을 다 넣어줬는데 post mapping 에서 받아오는 form 에서carNum 이 중복되어 (ex: 1111->1111,1111) 나타납니다.아래는 오류가 발생했을때 웹페이지 정보입니다.query string parameter 와 form 에서 중복으로 데이터를 가져옵니다.th:action -> th:action=@{/main/findCustomerByCarNum}수정하면 중복되는 오류가 사라지구요.. 혹시 th:action 사용시 getmapping에서@RequestParam (name = "carNumber") String carNumber (사진 빨간 밑줄)같은 것들이 있으면 저처럼 중복되는 오류가 생길수 있나요?