강의를듣다가 2분쯤에 궁금한게 생겨서 질문드립니다. jsp파일은 왜 main이 아닌 webapp밑에다가 만드는건가요? 정적자료이기 때문에 java가 아닌 webapp 밑에다가 만들어야하는건가요? 그리고 추가적으로 main이 아닌 webapp디렉토리가 하는 역할이 무엇인가요? webapp의 정의가 무엇인가요? 정적 자료(ex. html, jsp)들을 모아둔 폴더라고 봐도될까요? 네이밍은 무조건 webapp으로 해줘야 동작하는걸까요? webapp말고 다른 이름으로 했더니 webapp디렉토리에는 있던 파란색 동그라미가 노출되지않더라구요... webapp이 정정자료들을 모아둔 폴더라고 한다면, 회원목록jsp파일은 동적파일인데 왜 webapp의 하위에다가 생성한건가요? 정적 동적 상관없이 단순히 jsp파일이라서 그런건가요?
회원가입 기능을 만들고 있습니다. 빈 검증 어노테이션을 적용해서 해보고 있지만 아래 처럼 검증 메시지가 1개가 아니라 전부 한꺼번에 나오고 있습니다. 한번에 하나의 메시지를 출력하고 싶습니다. 왜 그럴까요... 검증 순서나 우선순위 같은 것을 할 수 있을까요? 에러메시지 설정입니다 #1순위 : 회원등록 메시지 NotBlank.memberReg.nickname=닉네임은 입력하세요 Length.memberReg.nickname=닉네임은 1 - 20자 글자입니다 NotBlank.memberReg.email=이메일을 입력하세요 Email.memberReg.email=이메일 형식에 맞지 않습니다 Length.memberReg.email=이메일 길이는 100글자 입니다 NotBlank.memberReg.password=비밀번호를 입력하세요 Pattern.memberReg.password=비밀번호 형식에 맞지 않습니다 Length.memberReg.password=영문 대소문자 숫자 특수기호 포함 6-19자리 #1순위 : 로그인 메시지 NotBlank.memberLogin.email=이메일은 필수입니다 Email.memberLogin.email=이메일 형식에 맞지 않습니다 Length.memberLogin.email=이메일 길이는 100글자 입니다 NotBlank.memberLogin.password=비밀번호를 입력하세요 Pattern.memberLogin.password=비밀번호 형식에 맞지 않습니다 Length.memberLogin.password=영문 대소문자 숫자 특수기호 포함 6-19자리 아래는 회원DTO 어노테이션 붙인 부분입니다. @NotBlank @Length(min=1, max=20) private String nickname; @NotBlank @Email(regexp="^[0-9a-zA-Z]([-_\\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\\.]?[0-9a-zA-Z])*\\.[a-zA-Z]{2,3}(.[a-zA-Z]{2,3})?$") @Length(min=5,max=100) private String email; @NotBlank @Length(min=6,max=19) private String password;
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx)아직은 입문을 듣고있는데 자바에 관련된 책을 보고 김영한님의 스프링공부를 하는중입니다. 조금 어렵긴 한데 어떻게 공부하는게 좋을까요 사실 하다보면 내가 만들수 있을까란 생각도 종종듭니다 .ㅜㅜ 자바 공부를 잘 못한거인지 , 아니면 계속 코딩하다보면 익숙해질지 궁금하구요 중간중간에 보는 ppt자료는 어디에 있는지 모르겠습니다 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요.
강의 잘 듣고 있습니다! 이것저것 해보다가 궁금한게 생겼어요. 19번째 줄이 실행되는 순간 customerList의 fee 값이 바뀌어야 하는거 아닌가요? 20번째 줄을 안쓸때는 아래처럼 fee값이 안바뀐채로 출력되는데 챈 50 0 레 45 0 모 40 0 벤 20 0 제 10 0 20번째 줄을 쓰니까 이렇게 나오는 이유가 궁금합니다! 챈 50 2000 레 45 2000 모 40 2000 벤 20 0 제 10 0
스프링부트 버전이 현재 2버전은 2.7.8밖에 없는데 자바11로 다운 받았으니 3버전 안하고 2.7.8로 하고 나머진 강의 그대로 해도 될까요?? 현재 화면입니다. 이렇게 설정해도 문제없는지 질문드립니다. 자주하는 질문에 보니 스프링부트 3버전부터는 Java17이상을 다운받아야한다고 나와있는데, 원래 Java19가 있는데 지웠다 11로 다시 설치한 상태라 컴퓨터에 Java여러 버전이 제대로 지워지지 않으면 오류가 날까봐 있는 버전으로 가능할지 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 똑같이 했는데 오류가 나옵니다 ..ㅜㅜ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 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으로 등록하지 않고 사용하는 방법이 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 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 omitted Caused 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 omitted Caused 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도 실행시킨 상태에서 했는데 원인을 모르겠습니다..
생각해보니 이전까지 유효성검사는 modelAttribute이 붙은 객체에 대해서만 했었네요 modelAttibute나 requestbody나 둘다 객체가 들어오니까 유효성 검사가 될수밖에없는거아닌가요?? 왜 아래와 같은 말을 하신거죠? "메세지 컨버터를 사용하는 requestBody에도 적용할수있다" < 이말은 적용안될것같은데 적용된다! 이런얘기잖아요.. 뭔 생각을 하면 적용이 안되는거아닌가? 이런생각을 하게 되는거죠?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 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로 이동이라 생각합니다.) 혹시 이 부분을 설명해주실 수 있을까요? ㅠㅠ 그래서 위 사진처럼 코드를 작성해보았는데 문제없이 작동합니다. 괜찮은 건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 헷갈리는 부분이 있어 질문드립니다. em.persist(member) 를 하게 되면 DB에 저장이 바로 되는건지, 영속성 컨텍스트에만 저장이 되는건지 궁금합니다. 그리고 DB 연결이 안되어 있는 상황에서 em.persist(member) 를 하게 된다면 어디에 저장이 되는 건지도 헷갈립니다.
안녕하세요. 강의 너무 잘 듣고 있습니다. 다름이 아니라 bindingResult.rejectValue를 공부하면서 의문이 생겼는데요. 이 bindingResult.rejectValue가 결국 new FieldError와 같고 new FieldError("item", "itemName", null, false, ...); 로 들어간다고 하셨는데 3번째 인자에 rejectedValue가 null이라면 오류가 났을 경우 사용자가 입력한 값이 복구가 안되고 사라지는 것이 아닌가요? 뒤에서 실행한 결과로는 값이 모두 유지되어서 의문이 들었습니다.
스프링 bean 관련 공부를 하던중 구글링을 통해 정리를 해보려 했지만 헷갈려서 질문드립니다. spring container가 빈을 생성하고 생성자가 여러차례 호출되어도 실제로 생성되는 객체는 하나이며 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 가르킨다고 알고있는 상태입니다. 제가 알고 있는 부분이 맞는지 그러면 test class에서 @beforeEach에 객체를 테스트 실행전 매번 새로 생성하는데 이것은 사실 결국은 하나의 최초객체를 가르킨다는 얘기인가요???