학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletComponentRegisteringPostProcessor': Instantiation of supplied bean failed at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1222) ~[spring-beans-6.1.3.jar:6.1.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1160) ~[spring-beans-6.1.3.jar:6.1.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:561) ~[spring-beans-6.1.3.jar:6.1.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) ~[spring-beans-6.1.3.jar:6.1.3] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) ~[spring-beans-6.1.3.jar:6.1.3] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.3.jar:6.1.3] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) ~[spring-beans-6.1.3.jar:6.1.3] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204) ~[spring-beans-6.1.3.jar:6.1.3] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:202) ~[spring-context-6.1.3.jar:6.1.3] at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:788) ~[spring-context-6.1.3.jar:6.1.3] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:606) ~[spring-context-6.1.3.jar:6.1.3] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-3.2.2.jar:3.2.2] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) ~[spring-boot-3.2.2.jar:3.2.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:334) ~[spring-boot-3.2.2.jar:3.2.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) ~[spring-boot-3.2.2.jar:3.2.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) ~[spring-boot-3.2.2.jar:3.2.2] at hello.servlet.ServletApplication.main(ServletApplication.java:12) ~[classes/:na] Caused by: java.lang.NoClassDefFoundError: jakarta/servlet/annotation/WebServlet at org.springframework.boot.web.servlet.WebServletHandler.<init>(WebServletHandler.java:39) ~[spring-boot-3.2.2.jar:3.2.2] at org.springframework.boot.web.servlet.ServletComponentRegisteringPostProcessor.<clinit>(ServletComponentRegisteringPostProcessor.java:57) ~[spring-boot-3.2.2.jar:3.2.2] at org.springframework.boot.web.servlet.ServletComponentScanRegistrar$ServletComponentRegisteringPostProcessorBeanDefinition.lambda$getInstanceSupplier$0(ServletComponentScanRegistrar.java:94) ~[spring-boot-3.2.2.jar:3.2.2] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainInstanceFromSupplier(AbstractAutowireCapableBeanFactory.java:1256) ~[spring-beans-6.1.3.jar:6.1.3] at org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier(DefaultListableBeanFactory.java:951) ~[spring-beans-6.1.3.jar:6.1.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1216) ~[spring-beans-6.1.3.jar:6.1.3] ... 16 common frames omitted Caused by: java.lang.ClassNotFoundException: jakarta.servlet.annotation.WebServlet at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[na:na] ... 22 common frames omitted 이렇게 오류가 떠서 https://www.inflearn.com/questions/176890 여기에 따라 지우는부분 지우고 다시실행해봤는데도 이러네요. 강의부분 7분 30초까지 했습니다. 서버를 중간에 다운했다 다시 시작하면 문제가 되나요?
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 코드 리뷰를 여러번 진행해도 잘못된 점을 찾지 못해 질문 올립니다 ㅠ 코드 링크도 함께 남깁니다 https://drive.google.com/file/d/13QHcf3F544Y9epn4K2luIK09jMDgSefW/view?usp=sharing
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 회원 추가 전에는 회원 목록 추가 모두 정상적으로 진행되다가 1명이라도 회원가입 하면 회원목록 진입시 whitelabel 500 에러가 뜹니다. 콘솔에는 members:1 Failed to load resource: the server responded with a status of 500 () 이 에러가 뜨고 인텔리제이에서는 org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'id' cannot be found on object of type 'java.util.ArrayList' - maybe not public or not valid? 이 에러가 뜹니다 https://drive.google.com/file/d/1aIglW2hFY46VkuO2FCaqcOl80ii87AvE/view?usp=sharing 감사합니다.
synchronized를 사용하면 1개의 쓰레드만 이용한다고 말씀해주셨는데 startTransaction(); stockService.decrease(id, quantity); endTransation(); 에서 왜 다른 쓰레드가 먼저 호출되는 상황이 발생하는건가요? 이 부분이 이해가 잘 안됩니다
[질문 내용] 인텔리제이에서 ServletApplication 파일은 실행되지만, 이외의 다른 파일 중 현재 위치 파일은 실행이 되지 않습니다. build.gradle을 현재 위치로 하고 실행 했을 때 실행이 잘 된 것을 보니 main을 제외한 모든 파일이 아닌 일부 파일이 인텔리제이에서 인식이 안되어 현재 위치에서 실행하지 못하는 것 같습니다. 오류 메시지 The file in the editor is not runnable. 시도해 본 결과 아래 사진처럼 edit configuration 설정을 하여 해당 파일을 지정해서 run을 시도했지만, 원하는 파일을 선택한 후 ok버튼이 눌러지지 않습니다. 어떻게 해야 main파일이 아닌 다른 현재 위치의 파일을 인텔리제이 환경에서 실행할 수 있나요? 처음부터 현재 파일이 실행이 안된 것이 아니라 plugins에서 tomcat 버전 업그레이드 한 이후부터 쭉 안됩니다.(smart tomcat 버전 : 4.72) 참고) 아래와 같이 자바 버전 설정 했고 , build.gradle에 다음과 같이 설정했습니다. java { sourceCompatibility = '18' } 인텔리제이 유료 버전입니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요 Bean Validation - 스프링 적용 강의 듣던 중 질문드립니다. 그러면 섹션 4에서 진행했던 supports()와 validate() 기능을 제공했던 Validator 인터페이스와 어노테이션 기반 검증을 진행하는 Bean Validation 역할을 하는 글로벌 Validator인 LocalValidatorFactoryBean과는 서로 @Validated를 보고 검증을 해준다는 개념은 같지만 그 외의 방식은 완전히 다른 객체라고 보면 될까요? 찾아보니 LocalValidatorFactoryBean의 부모인 Validator의 패키지는 jakarta.validation.Validator이고 섹션 4에서 배운 supports()와 validate()을 갖는 Validator 인터페이스의 패키지는 org.springframework.validation.Validator 라서 서로 다른 패키지이긴 합니다 !
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] @Test public void findByName(){ Member member1 = new Member(); member1.setName("spring1"); repository.save(member1); Member member2 = new Member(); member2.setName("spring2"); repository.save(member2); Member result = repository.findByName("spring1").get(); assertThat(result).isEqualTo(member1); //result와 member1이 같은지 아닌지 판단 } 이 findByName() 실행하기 이전까지는 앞부분은 전부 test도 잘 되었고, 오류 없이 출력이 되었습니다. 이걸 test하니까 위와 같이 뜨면서 MemoryMemberRepository.java 에서 아래 사진과 같이 .findAny(); 부분에 오류가 뜹니다. 다른 질문글을 찾아보니 강의 교안 코드에 나와 있지 않은 null에 관한 내용을 작성해야 하나 싶은 찰라에 새로운 오류까지 발생하였습니다. https://drive.google.com/file/d/1F5YGcP4JR40gl4Ke8unTL-Jk8zIosp_w/view?usp=sharing
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? ( 예 /아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ( 예 /아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 /아니오) [질문 내용] 이 사진은 김영한 선생님이 강의 영상에서 보여 주신 부분이고, 같은 부분이 6. 스프링 MVC - 기본 기능.pdf(v20231202) 의 51 페이지에 있습니다. (아래 사진) RequestResponseBodyMethodProcessor랑 HttpEntityMethodProcessor는 강의 내용에서도 그렇고 제가 코드로 확인해 봤을 때도 클래스였는데, 수정된 강의 자료엔 RequestResponseBodyMethodProcessor(), HttpEntityMethodProcessor() 이런 식으로 메서드처럼 표시되어 있습니다. 저는 이것들이 갑자기 메서드처럼 수정된 이유가 궁금했었는데 혹시 ArgumentResolver 글씨를 지우면서 남겨진 오타일까요? 방금 코드를 보면서 알았는데 ResponseBodyMethodProcessor뿐만 아니라 HttpEntityMethodProcessor도 ArgumentResolver인 동시에 ReturnValueHandler인 것 같더라고요. 혹시 ArgumentResolver 하나에만 해당하는 게 아니기 때문에 지우신 거라면 ArgumentResolver, ReturnValueHandler 둘 다에 해당한다는 내용이 추가되거나, 아니면 괄호가 아예 삭제되는 게 어떨까 싶어서 제보드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 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. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 강의 잘 듣고 있습니다. cascade,연관 관계를 사용하는 기준이 궁금해서 질문 글을 작성합니다. 1.cascade 질문 제가 이해한 바로는 엔티티를 영속성 컨텍스트 관리를 받기 위해 persist 등록하는 것이며 각 엔티티는 따로따로 persist를 해야 되는데 cascade를 사용하면 하나의 엔티티를 persist할 때 그와 연관된 엔티티를 같이 해주는 것으로 이해했습니다. Order 코드에서 OrderItem과 Delivery에 cascade가 적용됐는데 Member에는 적용을 안 하는 것 같더라고요. 왜 Member는 안 하는지 궁금합니다. 연관 관계 질문 order와 연관된 엔티티 간에 연관관계 메소드를 통해 한쪽에서 서로 등록해주는 것은 이해가 가는데 Item과 Category간에는 어느 쪽에도 연관 관계 메소드가 없는 이유가 궁금합니다. Item과 Category 이 둘은 약간 상수? 느낌이라서 연관 관계를 지을 필요가 없는 것일까요? 답변 주시면 정말 감사하겠습니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 메시지/국제화 파트의 @SpringBootTest를 하는 과정에서 다음과 같은 오류가 납니다. 그냥 Junit 단위 테스트는 잘되지만 스프링 부트 테스트에서만 해당 오류가 발생합니다. 다른 수강생의 비슷한 질문도 확인하여 해당 질문의 답변에 따라 조치도 취해보았고, 스택오버플로우를 찾아보며 mockito-inline 관련 설정도 해보았음에도 해결되지 않아 질문 올립니다! #콘솔 오류 메시지 # 테스트코드 #프로젝트 설정
안녕하세요! 제가 기억이 안 나는지 갑자기 궁금해진 부분이 있습니다. aop class=class hello.springtx.apply.TxBasicTest$BasicService$$SpringCGLIB$$0 강의대로 하니 정상적으로 Proxy 적용 확인할 수 있었습니다 그런데 갑자기 왜 테스트에서 수동으로 스프링 빈 등록을 했었지...? 라는 생각이 들어서 @SpringBootTest(classes = TxBasicTest.BasicService.class) public class TxBasicTest { @TestConfiguration을 주석처리 후 자동으로 빈을 생성할 클래스(BasicService)를 지정했습니다 : aop class=class hello.springtx.apply.TxBasicTest$BasicService Expecting value to be true but was false Expected :true Actual :false 다시 실행해보니 프록시가 적용이 안되어있습니다 왜 프록시가 스프링 컨테이너에 등록되지 않은건지 궁금합니다! @SpringBootTest로 해도 테스트코드에서 @Component 적용 이 안되는건지 궁금합니다
C:\Users\hong_\Desktop\hello-spring1>gradlew.bat > Task :help Welcome to Gradle 8.5. To run a build, run gradlew <task> ... To see a list of available tasks, run gradlew tasks To see more detail about a task, run gradlew help --task <task> To see a list of command-line options, run gradlew --help For more detail on using Gradle, see https://docs.gradle.org/8.5/userguide/command_line_interface.html For troubleshooting, visit https://help.gradle.org BUILD SUCCESSFUL in 760ms 1 actionable task: 1 executed C:\Users\hong_\Desktop\hello-spring1> cd build C:\Users\hong_\Desktop\hello-spring1\build 디렉터리 2024-02-13 오전 10:57 <DIR> . 2024-02-13 오전 10:57 <DIR> .. 2024-02-13 오전 10:57 <DIR> classes 2024-02-13 오전 10:57 <DIR> generated 2024-02-13 오전 10:57 <DIR> resources 2024-02-13 오전 10:57 <DIR> tmp 0개 파일 0 바이트 6개 디렉터리 366,841,688,064 바이트 남음
PDF 파일에는 View라는 코드는 아래 코드 밖에 없습니다 <html xmlns:th=" http://www.thymeleaf.org "> <body> <p th:text="'hello ' + ${name}">hello! empty</p> </body> </html> 혹시 10줄 인 영상이랑 같은 코드좀 공유해 주실 수 있으신가요?
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] @GetMapping("/login") public String loginForm(@ModelAttribute("loginForm") LoginForm form) { return "login/loginForm"; } 로그인 예제에서 로그인 폼 요청을 할때도, @ModelAttribute 로 값을 받는데, 어떤 기능을 하는지 궁금합니다. 폼 요청시에는 파라미터 값이 없어서 필요없을것 같아 지워보니 오류가 발생합니다.
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
orphanRemoval 을 걸지 않았을 경우 책6을 삭제했으나, userLoanHistories를 조회해보면 여전히 책6이 존재한다. orphanRemoval = true 을 걸었을 경우 클린 코드를 삭제했더니 조회시 사라졌다 어째서 orphanRemoval 을 걸어주지 않으면 데이터베이스에 반영이 되지 않는건가요? @Transactional 어노테이션으로 인해 트랜잭션이 시작될 때, 영속성 컨텍스트가 시작되고, 영속성 컨텍스트의 4대 특징 중 하나인 생성/수정 감지로 인해 user 객체의 userLoanHistories 의 값에 변경사항( removeOneHistory )이 발생하여 자동저장이 될거라고 생각했는데 말이죠.. 실제 데이터베이스상에선 userLoanHistories 는 user테이블의 필드가 아니기 때문에, 영속성 컨텍스트가 관리하는 field 에 포함이 되지않는데 orphanRemoval = true 를 걸어주면 비로소 자신이 관리하는 field로 인식하는걸까요? 원리가 너무 궁금해요.. 내용추가1) 바로 다음 강의인 책 대출 리팩토링에선 orphanRemoval 같은 옵션을 주지 않고도 new userLoanHistory 를 add한 내용대로 저장이 되는데, 어째서 userLoanHistory 를 remove하는것은 orphanRemoval 옵션이 없으면 데이터의 변경이 일어나지않는지 궁금합니다.. 제 생각에는 User 에서 userLoanHistories.add 를 하든 userLoanHistories.remove 를 하든 둘 다 User 와 UserLoanHistory 와의 연관관계를 이용한 데이터를 변경하기위한 접근같은데 .. add는 되는데 remove는 안되는게 살짝 이해하기 어렵습니다 ㅠ 내용추가2) returnBook 과 loanBook , removeOneHistory 의 차이점이 뭘까 고민해봤는데 returnBook 과 loanBook 은 UserLoanHistory 라는 Entity에 접근하는 과정 (loanBook은 Entity객체생성, returnBook은 Entity의 property 수정)이 존재하고, removeOneHistory 는 Entity에 직접 접근하는게 아니라 단순히 List에 대한 변경일뿐이고, Entity에 대한 직접적인 수정이나 생성이 이뤄진것이 아니므로 데이터베이스의 변경이 일어나지 않았다. 이렇게 이해했는데 제가 이해한 내용이 맞을까요? 생각을 정리하다보니 질문이 길어진 점 죄송합니다 ㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 전 강의에서 통합테스트할 때는 잘 돌아갔는데 jdbc 템플릿으로 코드를 수정하니 이런 오류가 뜹니다. 코드에는 빨간불이 안 떠요. 문제가 뭘까요? 껐다 다시 키고 실행하니 이렇게 뜹니다. integrationtest클래스랑 회원가입, 중복회원예외에 다 빨강느낌표 표시가 뜨고 저런 오류가 떠요.
위에서 th:field와 th:value 값이 같다면, 셀렉트 박스의 경우, selected 속성이 활성화된다고 이해했습니다. 애플리케이션 실행 후, 만약 '빠른 배송'이라는 것을 선택하면, thh:field의 값으로 'FAST'가 넘어오게 되고, th:each로 순회되면서 th:value의 값으로 'FAST'을 만났을 때, selected 속성이 활성화 되는 것이 맞을까요? 맞다면, 아래와 같은 궁금증이 있습니다. 위 과정에서 '빠른 배송' 글자를 클릭했을 때, 어떠한 코드로 인해서 'FAST' 가 넘어오게 되는지 th:field와 th:value의 값이 String의 equals()와 같은 원리 로 동작해서 단순히 똑같은 문자임을 확인하는 것인지 th:field와 th:value 값이 각각 어떻게 입력이 되어서 비교가 되는지 ( item.deliverCode는 객체이고, deliverCode.code는 String 타입인데 어떻게 비교가 되는지.. ) 장문의 질문 읽어주셔서 감사합니다 (_ _)
스프링 핵심 원리 - 기본편 강의를 듣고 정리한 내용을 다시 보자면, 싱글톤을 기본으로 사용하는 스프링 컨테이너에서는 공유 변수를 방지하기 위해 order() 메서드 안에 지역변수로 값을 설정해야 한다고 나와있습니다. public void order(String name, int price) { System.out.println("name = " + name + " price = " + price); return price; } 그런데 JPA 활용편에서는 임베디드 타입일 경우에는 new 생성자로 이를 해결하였고, 정적 팩토리 메서드 방식에서는 createOrder() 안에 new로 인스턴스를 따로 만들어서 객체 값을 관리하는 것으로 배웠습니다. 그렇다면 싱글톤으로 관리되는 서블릿에서도 지역변수 또는 new 생성자를 통한 불변 객체로 참조 변수가 공유되는 것을 막을 수 있나요?