주문내역 작업 (VO 객체사용)에서 오류...
해결됨
스프링 부트 웹 개발 입문 - 따라하며 배우기
주문 내역 처리인데 오류가 납니다. 구글에 소스 올리겠습니다...
- spring
- mvc
- spring-boot
173만명의 커뮤니티!! 함께 토론해봐요.
해결됨
스프링 부트 웹 개발 입문 - 따라하며 배우기
주문 내역 처리인데 오류가 납니다. 구글에 소스 올리겠습니다...
미해결
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요 영한님 강의 정말 잘 듣고 있습니다. 수강 도중 MultipartFile 사용 계층에 관해서 궁금한 부분이 생겨서 질문 드립니다. 제가 생각하기에 MultipartFile은 web 기술과 관련이 있다고 생각을 해서 그런지 서비스 계층의 파라미터로 MultipartFile을 전달하게 된다면 서비스 계층이 web 기술에 대한 의존이 생기는게 아닌가 하는 생각과, 파일을 저장하는 것도 비지니스 로직이니 서비스 계층으로 넘겨서 처리하는게 맞는 것 같다는 생각이 동시에 듭니다. 보통 인터넷을 찾아보면 서비스 계층에서 파일 저장을 수행하는 것 같은데 MultipartFile를 서비스 계층의 파라미터 넘기는 것에 대해 의문을 갖는게 맞는 걸까요? 강의 내용과 관련없는 내용이지만 추가적으로 controller에서 파라미터로 받은 dto를 서비스 계층으로 바로 넘겨도 괜찮은 걸까요?? 괜찮다면 dto의 패키지는 서비스 패키지 하위 o 컨트롤러, 서비스 패키지와 같은 계층 o 컨트롤러 하위 계층 x 이라고 생각하는데 이렇게 생각하는게 맞는 건지 궁금합니다..
미해결
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
둘다 저장된 값을 찾는것은 동일한데 왜 findById에는 Optional을 안붙이고, findByLoginId에만 Optional을 붙이는 건지 궁금합니다!!
미해결
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
안녕하세요! 강의를 학습함에 있어 궁금한 부분이 있습니다. 강의에서 폼 데이터 전달을 위한 등록, 수정용 폼 객체를 분리해서 사용을 했는데 그러면 @GetMapping("/edit")과 @GetMapping("add") 에서도 Item 도메인 객체를 반환하는 것 보다는 아래와 같이 등록, 수정용 객체를 분리해서 반환하는게 더 낫지 않을까 하고 생각되는데 혹시 어떻게 생각하시는지 궁금합니다! @GetMapping("/add") public String addForm(Model model) { model.addAttribute("item", new ItemSaveForm()); return "validation/v4/addForm"; } @GetMapping("/{itemId}/edit") public String editForm(@PathVariable Long itemId, Model model) { Item item = itemRepository.findById(itemId); ItemUpdateForm form = ItemUpdateForm.from(item); model.addAttribute("item", form); return "validation/v4/editForm"; }
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 기존 인텔리제이를 사용하여 학교 수업 및 팀프로젝트를 수행하여 기본 값과는 다른 수 있습니다. 하지만 프로젝트 생성하고 hellospring.main 실행시 Process finished with non-zero exit value 라는 오류가 발생해 구글링 하여 설정을 변경하니 java: warning: source release 17 requires target release 17라는 오류가 발생합니다. 어디를 수정해야하나요? (참고한 사이트: https://yjh5369.tistory.com/entry/intellij-%EC%8B%A4%ED%96%89-%EC%8B%9C-finished-with-non-zero-exit-value-1-%EC%98%A4%EB%A5%98 )
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오)예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 마지막에 h2실행하고 회원가입 목록 확인하려는데 C:\Users\gbc31\.jdks\openjdk-20.0.1\bin\java.exe -XX:TieredStopAtLevel=1 -Dspring.output.ansi.enabled=always - Dcom.sun.management .jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-Dmanagement.endpoints.jmx.exposure.include=*" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2023.1.1\lib\idea_rt.jar=55033:C:\Program Files\JetBrains\IntelliJ IDEA 2023.1.1\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath C:\Users\gbc31\study\hello-spring\build\classes\java\main;C:\Users\gbc31\study\hello-spring\build\resources\main;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-thymeleaf\3.1.1\69e351b19ee4fa37ff7cb851354498a880b5a937\spring-boot-starter-thymeleaf-3.1.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-web\3.1.1\f2c2d9e35430e4b4a98ad91780bb9b2d1deec08\spring-boot-starter-web-3.1.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-jdbc\3.1.1\8e6bdc511fc9ade17c09fcc20a0f6a44fa39a876\spring-boot-starter-jdbc-3.1.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter\3.1.1\cf74eeaef5a265c75dd89fea829391bf08efdb6c\spring-boot-starter-3.1.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.thymeleaf\thymeleaf-spring6\3.1.1.RELEASE\deb52ef921a4ac5132fedb7ebfc2bc1dad4382b3\thymeleaf-spring6-3.1.1.RELEASE.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-json\3.1.1\8dc99860536a6a858de6caaeb67f84d7af8a30a3\spring-boot-starter-json-3.1.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-tomcat\3.1.1\927f80fb9d8816209420223d1a1a09e730ea78e6\spring-boot-starter-tomcat-3.1.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework\spring-webmvc\6.0.10\af3f040747f4bfbcdb96140f8c9d252d3a6a4ef1\spring-webmvc-6.0.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework\spring-web\6.0.10\e61defa7908bf7a499f000dab8ef7691c2aa75c1\spring-web-6.0.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\com.zaxxer\HikariCP\5.0.1\a74c7f0a37046846e88d54f7cb6ea6d565c65f9c\HikariCP-5.0.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework\spring-jdbc\6.0.10\5179c98c5eba511cdd31852d1f74063aa17bf3da\spring-jdbc-6.0.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-autoconfigure\3.1.1\618ec717eef4ba2ff347c7713150aac8e73fe233\spring-boot-autoconfigure-3.1.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot\3.1.1\f8f80c1453c8fe0e08a6235f983d8daf571d3e3\spring-boot-3.1.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-logging\3.1.1\53bb456e4bf8f751de5a6ce154707b052946fd43\spring-boot-starter-logging-3.1.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\jakarta.annotation\jakarta.annotation-api\2.1.1\48b9bda22b091b1f48b13af03fe36db3be6e1ae3\jakarta.annotation-api-2.1.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework\spring-core\6.0.10\889aa214b6607763ddeb6bd391d682cd71681b36\spring-core-6.0.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.yaml\snakeyaml\1.33\2cd0a87ff7df953f810c344bdf2fe3340b954c69\snakeyaml-1.33.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.thymeleaf\thymeleaf\3.1.1.RELEASE\374a129dfa5e7d7f1a46eacc4d49e594ca0cf26f\thymeleaf-3.1.1.RELEASE.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.slf4j\slf4j-api\2.0.7\41eb7184ea9d556f23e18b5cb99cad1f8581fc00\slf4j-api-2.0.7.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.datatype\jackson-datatype-jsr310\2.15.2\30d16ec2aef6d8094c5e2dce1d95034ca8b6cb42\jackson-datatype-jsr310-2.15.2.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.module\jackson-module-parameter-names\2.15.2\75f8d2788db20f6c587c7a19e94fb6248c314241\jackson-module-parameter-names-2.15.2.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.datatype\jackson-datatype-jdk8\2.15.2\66a50e089cfd2f93896b9b6f7a734cea7bcf2f31\jackson-datatype-jdk8-2.15.2.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-databind\2.15.2\9353b021f10c307c00328f52090de2bdb4b6ff9c\jackson-databind-2.15.2.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-websocket\10.1.10\10604119402bcaa8490b638698ad177f8df4c50c\tomcat-embed-websocket-10.1.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-core\10.1.10\7423236b34aa78d6f36592b2aa294d7c8469f219\tomcat-embed-core-10.1.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-el\10.1.10\717033c0417fdc7e794b382c066b7e78f6029268\tomcat-embed-el-10.1.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework\spring-context\6.0.10\e2bd59f05c95647a274b7719d419cf8fde6f25a0\spring-context-6.0.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework\spring-aop\6.0.10\cc309a306fa759018b107dea9a208c758af0297\spring-aop-6.0.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework\spring-beans\6.0.10\8fc0684773cc1598edd810660f57d9e9c8ae6055\spring-beans-6.0.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework\spring-expression\6.0.10\bd8c93e473e713fe9150a772487507a8e600d5f1\spring-expression-6.0.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\io.micrometer\micrometer-observation\1.11.1\9027a35892c7e08ea8affce87b3662b6ceca122c\micrometer-observation-1.11.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework\spring-tx\6.0.10\459698d22aadc881afe425934cca79cc1f6bce91\spring-tx-6.0.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-classic\1.4.8\f00ba91d993e4d14301b11968d3cacc3be7ef3e1\logback-classic-1.4.8.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-to-slf4j\2.20.0\d37f81f8978e2672bc32c82712ab4b3f66624adc\log4j-to-slf4j-2.20.0.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.slf4j\jul-to-slf4j\2.0.7\a48f44aeaa8a5ddc347007298a28173ac1fbbd8b\jul-to-slf4j-2.0.7.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.springframework\spring-jcl\6.0.10\cba44e98dab40a506c50978a0e5f11ceaa90b3ff\spring-jcl-6.0.10.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.attoparser\attoparser\2.0.6.RELEASE\8f603f22a18d4f7258f8860ccbb68b069f49904a\attoparser-2.0.6.RELEASE.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.unbescape\unbescape\1.1.6.RELEASE\7b90360afb2b860e09e8347112800d12c12b2a13\unbescape-1.1.6.RELEASE.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-annotations\2.15.2\4724a65ac8e8d156a24898d50fd5dbd3642870b8\jackson-annotations-2.15.2.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-core\2.15.2\a6fe1836469a69b3ff66037c324d75fc66ef137c\jackson-core-2.15.2.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\io.micrometer\micrometer-commons\1.11.1\45bc0f2aa4d6180f1a783f1930f307a4efbb12e8\micrometer-commons-1.11.1.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-core\1.4.8\3fba9c105e0efc5ffdcda701379687917d5286f7\logback-core-1.4.8.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.20.0\1fe6082e660daf07c689a89c94dc0f49c26b44bb\log4j-api-2.20.0.jar;C:\Users\gbc31\.gradle\caches\modules-2\files-2.1\com.h2database\h2\2.1.214\d5c2005c9e3279201e12d4776c948578b16bf8b2\h2-2.1.214.jar hello.hellospring.HelloSpringApplication . ____ _ /\\ / ___'_ __ ( _)_ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.1.1) 2023-07-13T14:42:57.982+09:00 INFO 2516 --- [ main] h.hellospring.HelloSpringApplication : Starting HelloSpringApplication using Java 20.0.1 with PID 2516 (C:\Users\gbc31\study\hello-spring\build\classes\java\main started by gbc31 in C:\Users\gbc31\study\hello-spring) 2023-07-13T14:42:57.986+09:00 INFO 2516 --- [ main] h.hellospring.HelloSpringApplication : No active profile set, falling back to 1 default profile: "default" 2023-07-13T14:43:00.097+09:00 INFO 2516 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http) 2023-07-13T14:43:00.117+09:00 INFO 2516 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2023-07-13T14:43:00.117+09:00 INFO 2516 --- [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.10] 2023-07-13T14:43:00.297+09:00 INFO 2516 --- [ main] o.a.c.c.C.[Tomcat].[ localhost ].[/] : Initializing Spring embedded WebApplicationContext 2023-07-13T14:43:00.298+09:00 INFO 2516 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2207 ms 2023-07-13T14:43:00.750+09:00 INFO 2516 --- [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html] 2023-07-13T14:43:01.169+09:00 INFO 2516 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '' 2023-07-13T14:43:01.185+09:00 INFO 2516 --- [ main] h.hellospring.HelloSpringApplication : Started HelloSpringApplication in 3.946 seconds (process running for 5.154) 2023-07-13T14:43:08.270+09:00 INFO 2516 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[ localhost ].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2023-07-13T14:43:08.270+09:00 INFO 2516 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2023-07-13T14:43:08.271+09:00 INFO 2516 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms 2023-07-13T14:43:11.912+09:00 INFO 2516 --- [nio-8080-exec-4] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2023-07-13T14:43:14.153+09:00 ERROR 2516 --- [nio-8080-exec-4] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization. org.h2.jdbc.JdbcSQLInvalidAuthorizationSpecException: Wrong user name or password [28000-214] at org.h2.message.DbException.getJdbcSQLException( DbException.java:510 ) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.readException( SessionRemote.java:637 ) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.done( SessionRemote.java:606 ) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.initTransfer( SessionRemote.java:163 ) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.connectServer( SessionRemote.java:433 ) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.connectEmbeddedOrServer( SessionRemote.java:325 ) ~[h2-2.1.214.jar:2.1.214] at org.h2.jdbc.JdbcConnection.<init>( JdbcConnection.java:122 ) ~[h2-2.1.214.jar:2.1.214] at org.h2.Driver.connect( Driver.java:59 ) ~[h2-2.1.214.jar:2.1.214] at com.zaxxer.hikari.util.DriverDataSource.getConnection( DriverDataSource.java:138 ) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.PoolBase.newConnection( PoolBase.java:359 ) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.PoolBase.newPoolEntry( PoolBase.java:201 ) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.HikariPool.createPoolEntry( HikariPool.java:470 ) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.HikariPool.checkFailFast( HikariPool.java:561 ) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.HikariPool.<init>( HikariPool.java:100 ) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.HikariDataSource.getConnection( HikariDataSource.java:112 ) ~[HikariCP-5.0.1.jar:na] at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection( DataSourceUtils.java:160 ) ~[spring-jdbc-6.0.10.jar:6.0.10] at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection( DataSourceUtils.java:118 ) ~[spring-jdbc-6.0.10.jar:6.0.10] at org.springframework.jdbc.datasource.DataSourceUtils.getConnection( DataSourceUtils.java:81 ) ~[spring-jdbc-6.0.10.jar:6.0.10] at hello.hellospring.repository.JdbcMemberRepository.getConnection( JdbcMemberRepository.java:114 ) ~[main/:na] at hello.hellospring.repository.JdbcMemberRepository.findByName( JdbcMemberRepository.java:96 ) ~[main/:na] at hello.hellospring.service.MemberService.validateDuplicateMember( MemberService.java:25 ) ~[main/:na] at hello.hellospring.service.MemberService.join( MemberService.java:20 ) ~[main/:na] at hello.hellospring.controller.MemberController.create( MemberController.java:29 ) ~[main/:na] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke( DirectMethodHandleAccessor.java:104 ) ~[na:na] at java.base/java.lang.reflect.Method.invoke( Method.java:578 ) ~[na:na] at org.springframework.web.method.support .InvocableHandlerMethod.doInvoke( InvocableHandlerMethod.java:207 ) ~[spring-web-6.0.10.jar:6.0.10] at org.springframework.web.method.support .InvocableHandlerMethod.invokeForRequest( InvocableHandlerMethod.java:152 ) ~[spring-web-6.0.10.jar:6.0.10] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle( ServletInvocableHandlerMethod.java:118 ) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod( RequestMappingHandlerAdapter.java:884 ) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal( RequestMappingHandlerAdapter.java:797 ) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle( AbstractHandlerMethodAdapter.java:87 ) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.DispatcherServlet.doDispatch( DispatcherServlet.java:1081 ) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.DispatcherServlet.doService( DispatcherServlet.java:974 ) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.FrameworkServlet.processRequest( FrameworkServlet.java:1011 ) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.FrameworkServlet.doPost( FrameworkServlet.java:914 ) ~[spring-webmvc-6.0.10.jar:6.0.10] at jakarta.servlet.http.HttpServlet.service( HttpServlet.java:590 ) ~[tomcat-embed-core-10.1.10.jar:6.0] at org.springframework.web.servlet.FrameworkServlet.service( FrameworkServlet.java:885 ) ~[spring-webmvc-6.0.10.jar:6.0.10] at jakarta.servlet.http.HttpServlet.service( HttpServlet.java:658 ) ~[tomcat-embed-core-10.1.10.jar:6.0] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:205 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.tomcat.websocket.server.WsFilter.doFilter( WsFilter.java:51 ) ~[tomcat-embed-websocket-10.1.10.jar:10.1.10] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:174 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.springframework.web.filter.RequestContextFilter.doFilterInternal( RequestContextFilter.java:100 ) ~[spring-web-6.0.10.jar:6.0.10] at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:116 ) ~[spring-web-6.0.10.jar:6.0.10] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:174 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.springframework.web.filter.FormContentFilter.doFilterInternal( FormContentFilter.java:93 ) ~[spring-web-6.0.10.jar:6.0.10] at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:116 ) ~[spring-web-6.0.10.jar:6.0.10] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:174 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal( CharacterEncodingFilter.java:201 ) ~[spring-web-6.0.10.jar:6.0.10] at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:116 ) ~[spring-web-6.0.10.jar:6.0.10] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:174 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.StandardWrapperValve.invoke( StandardWrapperValve.java:166 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.StandardContextValve.invoke( StandardContextValve.java:90 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.authenticator.AuthenticatorBase.invoke( AuthenticatorBase.java:482 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:115 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.valves.ErrorReportValve.invoke( ErrorReportValve.java:93 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.StandardEngineValve.invoke( StandardEngineValve.java:74 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.connector.CoyoteAdapter.service( CoyoteAdapter.java:341 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.coyote.http11.Http11Processor.service( Http11Processor.java:391 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.coyote.AbstractProcessorLight.process( AbstractProcessorLight.java:63 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process( AbstractProtocol.java:894 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun( NioEndpoint.java:1741 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.tomcat.util.net.SocketProcessorBase.run ( SocketProcessorBase.java:52 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1191 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:659 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( TaskThread.java:61 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at java.base/java.lang.Thread.run( Thread.java:1623 ) ~[na:na] 2023-07-13T14:43:14.183+09:00 ERROR 2516 --- [nio-8080-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.IllegalStateException: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection] with root cause org.h2.jdbc.JdbcSQLInvalidAuthorizationSpecException: Wrong user name or password [28000-214] at org.h2.message.DbException.getJdbcSQLException( DbException.java:510 ) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.readException( SessionRemote.java:637 ) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.done( SessionRemote.java:606 ) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.initTransfer( SessionRemote.java:163 ) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.connectServer( SessionRemote.java:433 ) ~[h2-2.1.214.jar:2.1.214] at org.h2.engine.SessionRemote.connectEmbeddedOrServer( SessionRemote.java:325 ) ~[h2-2.1.214.jar:2.1.214] at org.h2.jdbc.JdbcConnection.<init>( JdbcConnection.java:122 ) ~[h2-2.1.214.jar:2.1.214] at org.h2.Driver.connect( Driver.java:59 ) ~[h2-2.1.214.jar:2.1.214] at com.zaxxer.hikari.util.DriverDataSource.getConnection( DriverDataSource.java:138 ) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.PoolBase.newConnection( PoolBase.java:359 ) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.PoolBase.newPoolEntry( PoolBase.java:201 ) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.HikariPool.createPoolEntry( HikariPool.java:470 ) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.HikariPool.checkFailFast( HikariPool.java:561 ) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.pool.HikariPool.<init>( HikariPool.java:100 ) ~[HikariCP-5.0.1.jar:na] at com.zaxxer.hikari.HikariDataSource.getConnection( HikariDataSource.java:112 ) ~[HikariCP-5.0.1.jar:na] at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection( DataSourceUtils.java:160 ) ~[spring-jdbc-6.0.10.jar:6.0.10] at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection( DataSourceUtils.java:118 ) ~[spring-jdbc-6.0.10.jar:6.0.10] at org.springframework.jdbc.datasource.DataSourceUtils.getConnection( DataSourceUtils.java:81 ) ~[spring-jdbc-6.0.10.jar:6.0.10] at hello.hellospring.repository.JdbcMemberRepository.getConnection( JdbcMemberRepository.java:114 ) ~[main/:na] at hello.hellospring.repository.JdbcMemberRepository.findByName( JdbcMemberRepository.java:96 ) ~[main/:na] at hello.hellospring.service.MemberService.validateDuplicateMember( MemberService.java:25 ) ~[main/:na] at hello.hellospring.service.MemberService.join( MemberService.java:20 ) ~[main/:na] at hello.hellospring.controller.MemberController.create( MemberController.java:29 ) ~[main/:na] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke( DirectMethodHandleAccessor.java:104 ) ~[na:na] at java.base/java.lang.reflect.Method.invoke( Method.java:578 ) ~[na:na] at org.springframework.web.method.support .InvocableHandlerMethod.doInvoke( InvocableHandlerMethod.java:207 ) ~[spring-web-6.0.10.jar:6.0.10] at org.springframework.web.method.support .InvocableHandlerMethod.invokeForRequest( InvocableHandlerMethod.java:152 ) ~[spring-web-6.0.10.jar:6.0.10] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle( ServletInvocableHandlerMethod.java:118 ) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod( RequestMappingHandlerAdapter.java:884 ) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal( RequestMappingHandlerAdapter.java:797 ) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle( AbstractHandlerMethodAdapter.java:87 ) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.DispatcherServlet.doDispatch( DispatcherServlet.java:1081 ) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.DispatcherServlet.doService( DispatcherServlet.java:974 ) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.FrameworkServlet.processRequest( FrameworkServlet.java:1011 ) ~[spring-webmvc-6.0.10.jar:6.0.10] at org.springframework.web.servlet.FrameworkServlet.doPost( FrameworkServlet.java:914 ) ~[spring-webmvc-6.0.10.jar:6.0.10] at jakarta.servlet.http.HttpServlet.service( HttpServlet.java:590 ) ~[tomcat-embed-core-10.1.10.jar:6.0] at org.springframework.web.servlet.FrameworkServlet.service( FrameworkServlet.java:885 ) ~[spring-webmvc-6.0.10.jar:6.0.10] at jakarta.servlet.http.HttpServlet.service( HttpServlet.java:658 ) ~[tomcat-embed-core-10.1.10.jar:6.0] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:205 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.tomcat.websocket.server.WsFilter.doFilter( WsFilter.java:51 ) ~[tomcat-embed-websocket-10.1.10.jar:10.1.10] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:174 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.springframework.web.filter.RequestContextFilter.doFilterInternal( RequestContextFilter.java:100 ) ~[spring-web-6.0.10.jar:6.0.10] at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:116 ) ~[spring-web-6.0.10.jar:6.0.10] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:174 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.springframework.web.filter.FormContentFilter.doFilterInternal( FormContentFilter.java:93 ) ~[spring-web-6.0.10.jar:6.0.10] at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:116 ) ~[spring-web-6.0.10.jar:6.0.10] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:174 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal( CharacterEncodingFilter.java:201 ) ~[spring-web-6.0.10.jar:6.0.10] at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:116 ) ~[spring-web-6.0.10.jar:6.0.10] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:174 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.StandardWrapperValve.invoke( StandardWrapperValve.java:166 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.StandardContextValve.invoke( StandardContextValve.java:90 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.authenticator.AuthenticatorBase.invoke( AuthenticatorBase.java:482 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:115 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.valves.ErrorReportValve.invoke( ErrorReportValve.java:93 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.core.StandardEngineValve.invoke( StandardEngineValve.java:74 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.catalina.connector.CoyoteAdapter.service( CoyoteAdapter.java:341 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.coyote.http11.Http11Processor.service( Http11Processor.java:391 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.coyote.AbstractProcessorLight.process( AbstractProcessorLight.java:63 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process( AbstractProtocol.java:894 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun( NioEndpoint.java:1741 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.tomcat.util.net.SocketProcessorBase.run ( SocketProcessorBase.java:52 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1191 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:659 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( TaskThread.java:61 ) ~[tomcat-embed-core-10.1.10.jar:10.1.10] at java.base/java.lang.Thread.run( Thread.java:1623 ) ~[na:na] 이런식으로 Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed 오류가 나오네요 다른분들은 servlet.service오류는 없는거 같던데 어떻게 해야될까요?
미해결
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 강의 예제를 따라하다가 @ModelAttribute 에 매핑하는 Item 클래스에 @AllArgsConstructor 와 @NoArgsConstructor 만 붙이고, 진행을 하니 @AllArgsConstructor가 있음에도 불구하고 form 데이터의 값을 매핑하지 못했습니다. 이 경우 기본 생성자를 지우거나, @Setter 를 달면 정상작동하는데, 왜 이렇게 동작하는 것인지 질문드리고 싶습니다 !
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
안녕하세요! 순수 JDBC 강의에서 JdbcMemberRepository.java 전체 코드 혹시 어디서 확인할 수 있을까요....?!
해결됨
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 가격에 문자를 입력하면 400 에러가 발생합니다. Controller @PostMapping("/add") public String addItemv3(@ModelAttribute Item item, RedirectAttributes redirectAttributes, BindingResult bindingResult) { // bindingResult 스프링 제공 검증 기능 //검증 로직 if(!StringUtils.hasText(item.getItemName())){ // bindingResult.addError(new FieldError("item","itemName","상품 이름은 필수 입니다.")); bindingResult.addError(new FieldError("item","itemName",item.getItemName(),false,new String[]{"required.item.itemName"},null,null)); } if (item.getPrice() == null || item.getPrice() < 1000 || item.getPrice() > 1000000) { // bindingResult.addError(new FieldError("item","price","가격은 1,000 ~ 1,000,000 까지 허용합니다.")); bindingResult.addError(new FieldError("item","price",item.getPrice(),false,new String[]{"range.item.price"},new Object[]{1000,1000000},null)); } if (item.getQuantity() == null || item.getQuantity() >= 9999) { // bindingResult.addError(new FieldError("item","quantity","수량은 최대 9,999 까지 허용합니다.")); bindingResult.addError(new FieldError("item","quantity",item.getQuantity(),false,new String[]{"max.item.quantity"},new Object[]{9999},null)); } //특정 필드가 아닌 복합 룰 검증 if (item.getPrice() != null && item.getQuantity() != null) { int resultPrice = item.getPrice() * item.getQuantity(); if (resultPrice < 10000) { bindingResult.addError(new ObjectError("item",new String[]{"totalPriceMin"},new Object[]{10000,resultPrice},null)); } } log.info("bindingResult ={}"+bindingResult); //검증에 실패하면 다시 입력 폼으로 if (!bindingResult.hasErrors()) { log.info("errors={}",bindingResult); return "validation/v2/addForm"; } // 성공 로직 Item savedItem = itemRepository.save(item); redirectAttributes.addAttribute("itemId", savedItem.getId()); redirectAttributes.addAttribute("status", true); return "redirect:/validation/v2/items/{itemId}"; } @GetMapping("/add") public String addForm(Model model) { model.addAttribute("item", new Item()); return "validation/v2/addForm"; } 강의에서는 error 출력하는 부분에서 스프링에서 제공하는 메세지가 뜨는데 저는 위와 같이 결과가 나옵니다. 로그는 2023-07-13 08:31:36.584 WARN 20844 --- [nio-8080-exec-2] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors Field error in object 'item' on field 'price': rejected value [qq]; codes [typeMismatch.item.price,typeMismatch.price, typeMismatch.java .lang.Integer,typeMismatch]; arguments [ org.springframework.context.support .DefaultMessageSourceResolvable: codes [item.price,price]; arguments []; default message [price]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.lang.Integer' for property 'price'; nested exception is java.lang.NumberFormatException: For input string: "qq"]] 이렇게 나옵니다. 혹시 원인을 알 수 있을까여?
미해결
스프링 부트 웹 개발 입문 - 따라하며 배우기
제 소스파일은 구글드라이브 링크를 걸어드리겠습니다ㅠ 수업과정 그대로 진행했고, 혹시 틀린부분없나 일일히 체크해봤는데도 잘모르겠네요 https://drive.google.com/drive/folders/1Qh3u8f_Y3Serz1JDhtKld6PEFiUGEfpt?usp=drive_link
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 6:23에 필드주입을 하면 중간에 바꿔치기를 할수있는 방법이 없다는게 무슨 말인가요? 그럼 생성자주입은 바꿔치기가 된다는건데 이게 조립될때를 말하는건가요? 그럼 필드주입은 조립될때도 안바뀐다는건가요? 실행중에 바꾸는건 세터만 된다는식으로 얘기를해서요 컨트롤러가 정확하게 어떻게 작동되는지에 대한 이해가 아직 부족한거같은데 로드맵 따라가다보면 채워지는 부분일까요?
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. MemberServiceTest에서 BeforeEach에서 새로 객체를 불러오고 AfterEach에선 다음 테스트를 위해 저장된걸 지우는걸로 이해를 했는데 어차피 객체를 새로 만드는데 지우는 과정이 왜 필요한건가요? 그래서 AfterEach 코드를 지워봤는데 회원가입()에서부터 막히더라고요 AfterEach는 테스트가 끝나고 실행되는건데 왜 첫번째 테스트부터 작동에 문제가 생기는건가요?
미해결
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] JAVA 17, 스프링부트 3.0 이상 사용중입니다. 현재 매뉴얼에는 스프링부트 3.0 이상 사용자는 dependency 부분만 수정하면 작동이 가능하다고 되어있는데 회원등록 후 회원조회를 해보니 WhiteLabel Error와 함께 다음과 같은 오류가 발생했습니다. ERROR 84347 --- [nio-8080-exec-2] a.c.c.C.[.[.[.[frontControllerServletV1] : Servlet.service() for servlet [frontControllerServletV1] in context with path [] threw exception [/WEB-INF/views/members.jsp (line: [17], column: [4]) According to TLD or attribute directive in tag file, attribute [items] does not accept any expressions] with root cause 이와 관련하여 해결방법을 찾아보니 JSTL의 버전업으로 인해 taglib 사용 시 uri를 " http://java.sun.com/jstl/core " 가 아닌 " http://java.sun.com/jstl/core_rt"를 사용하면 정상적으로 회원목록 조회가 작동하는 것을 확인하였습니다. 관련자료 : https://erim1005.tistory.com/entry/JSTLAccording-to-TLD-or-attribute-directive-in-tag-file
미해결
Practical Testing: 실용적인 테스트 가이드
안녕하세요 강의를 듣다가 궁금증이 생겨서 질문을 드립니다. void init() { // given List<Product> products = List.of( createProduct("001", 1000), createProduct("002", 2000) ); // when Order order = Order.create(products, LocalDateTime.now()); // then assertThat(order.getOrderStatus()).isEqualByComparingTo(OrderStatus.INIT); } 강의에서 OrderTest 클래스 테스트 과정에서 enum을 비교할때 isEqualByComparingTo를 사용하셨습니다. assertThat(order.getOrderStatus()).isEqualTo(OrderStatus.INIT); 위와 같이 isEqualTo를 사용해도 enum을 비교할 수 있는데, 혹시 isEqualTo 대신 isEqualByComparingTo를 사용한 이유를 알 수 있을까요? isEqualByComparing가 정의된 AbstractComparableAssert.java를 확인해보면 BigDecimal을 예시로 들어서 사용법을 설명하고 있습니다. BigDecimal의 예시로 Enum을 써야 하는 방법을 생각해보았는데, 유추(?)가 잘 되지 않아서 질문을 남깁니다. 항상 좋은 강의 제공해주셔서 감사합니다!!😀😀
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드하고 실행하기 오류가 납니다 제 환경은 아래와 같습니다 설치한 자바 버전: javac 11.0.19 컴퓨터 환경: 윈도우 명령프롬프트 자바 경로: C:\Program Files\Java\jdk-11 변경후 자바경로: C:\Program Files\Java\jdk-11.0.19 hello-spring 경로: C:\Astudy\hello-spring 시스템환경변수: C:\Program Files\Java\jdk-11.0.19 라고 설정 (이전에 1.8 자바를 설치했던 경험이 있어서 인텔리에서는 모든 환경을 java 11.0.19로 바꿔줌) 시스템 변수 path: %JAVA_HOME%\bin 프로젝트 경로로 이동해서 dir에서 gradlew.bat 확인까지는 잘됩니다 오류1 : ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\Java\jdk-11.0.9 Please set the JAVA_HOME variable in your environment to match the location of your Java installation. 라고 떠서 혹시나 환경변수의 자바명과 자바경로의 명이 달라서 그런가 싶어서 이번에는 아예 jdk-11를 지우고 폴더명을 jdk-11.0.19로 다시 만들어 설치함 그래도 아래와 같은 오류가 뜸 오류2 : C:\Astudy\hello-spring>gradlew.bat ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\Java\jdk-11.0.9 Please set the JAVA_HOME variable in your environment to match the location of your Java installation. 여기서 의문인 것은 왜 java 11.0.19가 아니라 11.0.9로 나온건지 모르겠음 명령어는 gradlew build, ./gradlew build, ./gradlew, ./gradlew.bat, gradlew, gradlew.bat 다쳐봄 이중에서 뭘로 골라서 쳐야할 지도 헷갈림 제발 도와주세요
미해결
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 안녕하세요 현재 쿠키를 보내면 ga=~~~~~~~~~~~~~~~~~~~~ ga GOPSD9nLR1=~~~~~~~~~ reponse에 세팅하면 해당 값들이 같이 나오는데 어떠한 의미인지 궁금합니다.!
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] http://localhost:8000은 실행이 되는데 http://localhost:8000/hello는 Error Page가 뜹니다. 복사 붙여넣기로 코드를 작성했는데 어디가 잘못되었는지 모르겠습니다 ㅠㅠ HelloController가 사용되지 않은 것 같은데 어디를 고쳐야하는지 모르겠습니다.. 경로는 다 영어 경로로 확인했습니다!
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
http://localhost:8080/hello-static이 아닌 http://localhost:8080/hello-static.html 으로 뒤에 .html을 붙이는 이유가 해당 파일은 맵핑이 되어있지 않아서 그런건가요?
미해결
스프링 프레임워크는 내 손에 [스프1탄]
커리큘럼 소개하실 때 스프 2탄 mvc07부분에서 리액트와의 연동 방법을 간략하게나마 보여주신다고 하셨는데 스프2탄 커리큘럼에는 없는 것 같아서요! 스프2탄 mvc07 강의 듣다보면 내용이 나오나요??
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요. Test에서 아래 메서드를 추가하여 메모리에 있는 값을 초기화 시키는 것은 이해했습니다. @AfterEach public void afterEach() { repository.clearStore(); } 그런데, 아래 메서드를 추가하기 전에, 왜 MemoryMemberRepository class에서, 아래 메서드를 추가해야 하는지 모르겠습니다! public void clearStore() { store.clear(); } 제가 Test 코드를 처음 작성하는데 이해가 되지 않아서 질문드립니다! 감사합니다.