묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
ExceptionInInitializerError
'JPA와 DB설정, 동작확인' 수업 중 질문입니다.Test코드는 통과했다고 나오지만 콘솔에는 에러가 뜨고 있습니다. java.lang.ExceptionInInitializerError: null at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 와 함께 Caused by는Caused by: java.lang.IllegalStateException: MicrometerObservationRegistryTestExecutionListener requires micrometer-observation 1.10.8 or higher at org.springframework.test.context.observation.MicrometerObservationRegistryTestExecutionListener.<clinit>(MicrometerObservationRegistryTestExecutionListener.java:80) ... 78 common frames omittedCaused by: java.lang.NoClassDefFoundError: io/micrometer/context/ThreadLocalAccessor이렇게 나오고 있습니다. 구글링 해보니 spring boot 버전3.0.8에서 간헐적으로 나오는 증상같은데 테스트가 진행됐으니 그대로 해도 괜찮을까요? 아니면 지금이라도 버전 변경을 해야하나요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
DatasourceManager와 JpaTransactionManager 혼용
안녕하세요 강의를 듣다가 궁금한것이 생겨서 질문 남깁니다.강의 중간에 영한님께서, DatasourceManager와 JpaTransactionManager 를 함께 사용 하는 경우, JpaTransactionManager를 등록한다고 하셨고 그 이유에 대해서는 JpaTransactionManager가 DatasourceTransactionManager가 제공하는 기능의 대부분을 지원한다고 하셨습니다.현재 개발 중인 프로젝트에서 myBatis와 JPA 두 가지를 사용하고 있어서 위 두 개의 트랜잭션 매니저를 사용 하고 있는데, 각 다른 트랜잭션 이 서로 호출하게 되면 Transaction Conflict 라는 에러가 발생해서 현재 말씀하셨던것 처럼 JpaTransactionManager 하나로 사용하려 합니다.영한님께서는 대부분의 기능을 지원 한다고 하셨는데, 그렇다면 혹시 그 일부 지원하지 않는 기능에는 예를 들어 어떤 것들이 있을 수 있고, 혹시 발생 가능성이 있는 잠재적인 이슈가 있는지 궁금해서 질문을 남깁니다.감사합니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
findByLonginId와 findById의 차이에 대해 질문이 있습니다
둘다 저장된 값을 찾는것은 동일한데 왜 findById에는 Optional을 안붙이고, findByLoginId에만 Optional을 붙이는 건지 궁금합니다!!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@GetMapping("/edit")와 @GetMapping("add")에서 Item 반환
안녕하세요! 강의를 학습함에 있어 궁금한 부분이 있습니다.강의에서 폼 데이터 전달을 위한 등록, 수정용 폼 객체를 분리해서 사용을 했는데 그러면 @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)
-
미해결스프링 핵심 원리 - 기본편
7장 조회한 빈이 모두 필요할때 list,map 강의 질문드립니다.
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'orderServiceimpl' defined in file [C:\study\core\out\production\classes\hello\core\Order\OrderServiceimpl.class]: Unsatisfied dependency expressed through constructor parameter 1: No qualifying bean of type 'hello.core.discount.DiscountPolicy' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier("mainDiscountPolicy")} 라고 뜨고 at hello.core.autowired.AllBeanTest.findAllBean(AllBeanTest.java:21)여기가 문제라고 하는데 어떻게 해결할 수 있을까요...ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class, DiscountService.class); 위 코드입니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
500 화이트에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.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 WebApplicationContext2023-07-13T14:43:00.298+09:00 INFO 2516 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2207 ms2023-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 ms2023-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 causeorg.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편 - 백엔드 웹 개발 활용 기술
@ModelAttribute 와 생성자의 관계
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의 예제를 따라하다가 @ModelAttribute 에 매핑하는 Item 클래스에 @AllArgsConstructor 와 @NoArgsConstructor 만 붙이고, 진행을 하니 @AllArgsConstructor가 있음에도 불구하고 form 데이터의 값을 매핑하지 못했습니다. 이 경우 기본 생성자를 지우거나, @Setter 를 달면 정상작동하는데, 왜 이렇게 동작하는 것인지 질문드리고 싶습니다 !
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JdbcMemberRepository.java 코드
안녕하세요! 순수 JDBC 강의에서 JdbcMemberRepository.java 전체 코드 혹시 어디서 확인할 수 있을까요....?!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
id 관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요.코드를 똑같이 따라 썼는데 글 수정시 submit을 누르면 글이 수정되는 것이 아니라 수정된 내용의 상품이 하나 더 등록됩니다. 그래서 상품 한개가 있을 때 그 상품을 수정하면 수정된 상품까지해서 상품이 총 두개가 됩니다. 엔티티 설계할 때 @ID의 생성전략을 GenerationType.IDENTITY로 하였는데 이게 문제가 될까요? 디버깅 해보니 상품 저장시에 ItemRepository에서 merge가 아닌 persist를 하고있습니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
findByname 질문있습니다
인터페이스에 findByName(String name) 메소드를 선언만하고 구현체에 무슨 역할을 하는지 상세한 메소드를 오버라이딩 하지 않았는데 쓸 수 있는 이유가 뭔가요?아 강의를 더 들으니 설명을해주시네요 ㅎㅎ..그리고 제가 자바에 아직 잘 모르기 때문일까요? 자바 문법을 처음 공부하고 현재 이 강의를 듣고 있는데 위와 같은 질문들을 잘 모르겠다면 자바를 더 공부해야 하는걸까요?자바 문법만 공부했고 자바에 익숙해지려는 연습으로 자바 코딩테스트를 해보면 자바에 더 익숙해질까요? 아니면 다른 추천 해주실 만한 공부가 있을까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
ddl-auto: create
강의에서spring.jpa.hibernate.ddl-auto: create 이 옵션은 애플리케이션 실행 시점에 테이블을 drop 하고, 다시 생성한다. 라고 되있는데테스트에서는 @Transaction에 의해 자동으로 메소드가 끝나면 rollback되니까 영향을 끼치지 못한다. 라고 이해하면 될까요??정리하면rollback이 테이블자체를 삭제하는 것은 아니니까 ddl-auto: create와 다르지만 결과에는 영향을 끼치지 않는다. 라고 이해하면 될까요?답변주시면 정말 감사하겠습니다.
-
미해결토비의 스프링 부트 - 이해와 원리
HttpServletRequest.session에 관련된 질문입니다.
서버에서 session이 어떤식으로 관리되는지 궁금합니다.궁금하게 된 이유는 저희가 흔히 인증방식을 jwt token을 쓸 경우 session less때문에 서버에 부하를 줄인다고 알려져 있는데spring boot를 포함한 다른 서버들도 각 요청마다 HttpServletRequest.session이 담겨져서 오고있고 실제로 컨트롤단에서 사용할 수 있는데 단지 session객체를 참조하지않고 사용한다는 것 만으로 세션을 안쓰기 때문에 서버에 부하를 안준다고 말할 수 있는 걸까요? 제가 생각하는 서버에 부하를 안준다는건, session객체 자체가 생성되지 않아야 부하가 안생긴다는 말이 자연스러울거 같은데, 단지 session객체를 참조해서 쓰지 않는다는 이유만으로 서버의 부하가 없다고 볼 수 있는지 (체감이 될 정도) 궁금합니다.아마 제가 session에 대한 이해도가 부족해서 드는 궁금함 같습니다. 좋은 강의 만들어주셔서 감사합니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
BindingResult의 타입오류시 400 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.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 errorsField 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"]] 이렇게 나옵니다. 혹시 원인을 알 수 있을까여?
-
미해결Practical Testing: 실용적인 테스트 가이드
spring batch 통합 테스트시 @Transactional 사용 어려움 질문이욥!!
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요.14분쯤에 spring batch 통합 테스트시 여러 트랜잭션 경계가 참여해 @Transactional 사용이 어려워 주로 deleteAllInBatch를 사용해 수동으로 데이터를 지우신다고 말씀해주셨는데..spring batch를 한번도 개발해보거나 테스트한적도 없어서 '여러 트랜잭션 경계가 참여하는 상황'에 대해서 잘 떠오르지가 않아서 혹시 간단하게라도 예시 부탁드려도 될까욥?! ㅠㅠ감사합니다.※ 평소에 막연히 '테스트 코드 짜봐야지~' 라고 생각만 했던걸 강사님 강의를 듣고난 이후로 테스트 코드 작성을 실천하고 있습니다!! 다른 강의들도 많이많이 찍어주세요!!(3개월에 한번..)
-
해결됨쥬쥬와 함께 하루만에 시작하는 백엔드 - 스프링, 도커, AWS
맛집 수정 API 질문입니다
editRestaurant() 메서드에서요, RestaurantEntity restaurant = restaurantRepository.findById(restaurantId).orElseThrow(()->new RuntimeException("없는 레스토랑입니다")); restaurant.changeNameAndAddress(request.getName(), request.getAddress()); //restaurantRepository.save(restaurant);여기서 save는 안해도 될 것같습니다.영속성컨테이너에 이미 있는 엔티티라 수정을 하면 save를 안해도 반영이 되는것으로 알고 있습니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
getTransaction에서 커넥션을 생성하는 부분은 어디서 확인할 수 있나요?/
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.별거 아닐수는 있는데 교재를 보면 transactionMannger.getTransaction()을 서비스로직에서 호출하면 트랜잭션을 시작하기전에 트랜잭션 매니저가 내부에서 데이터소스를 이용해서 커넧녀을 생성한다 나와있더라구요,테스트 코드 작성햇을때 보면 일단 데이터소스는 생성자 주입할 때 넣어주는것 같은데 커넥션을 생성하는 코드 부분이 궁금해서 찾아보고 싶은데 어디에 있는지 알 수가 없더라구요.. 코드를 보고 싶은데 어디를 타고 들어가면 되는지 알려주시면 감사하겟습니다.
-
해결됨스프링 핵심 원리 - 기본편
ComponentScan했을시에 스프링 컨테이너 선언
@ComponentScan과 @Autowired를 사용했으면 MemberApp과 OrderApp의 ApplicationContext를 사용하는 부분은 어떻게 변경해야하나요?ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);MemberService memberService = ac.getBean("memberService",MemberService.class);OrderService orderService = ac.getBean("orderService",OrderService.class);해당 부분에서 ApplicationContext ac 선언 문에서 인자를 AutoAppConfig로 바꿔보니 shared bean을 사용하고 있고 에러가 나서요...
-
미해결스프링 부트 웹 개발 입문 - 따라하며 배우기
안녕하세요 7장 커피메뉴 DB 연동과정에서 오류납니다.
제 소스파일은 구글드라이브 링크를 걸어드리겠습니다ㅠ수업과정 그대로 진행했고, 혹시 틀린부분없나 일일히 체크해봤는데도 잘모르겠네요 https://drive.google.com/drive/folders/1Qh3u8f_Y3Serz1JDhtKld6PEFiUGEfpt?usp=drive_link
-
미해결스프링 핵심 원리 - 기본편
스프링 핵심원리 컴포넌트 스캔 질문:NoSuchBeanDefinitionException
지금 실행해보면 아래와 같은 에러가 나오는데 어떻게 하면 해결할 수 있는지 알려주시면 감사하겠습니다!org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'hello.core.member.MemberService' available