학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. build.gradle plugins { id 'java' id 'war' id 'org.springframework.boot' version '3.2.5' id 'io.spring.dependency-management' version '1.1.4' } group = 'hello' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' // jsp 추가 implementation 'org.apache.tomcat.embed:tomcat-embed-jasper:10.1.17' implementation 'javax.servlet:jstl' // jsp 추가 끝 compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } tasks.named('test') { useJUnitPlatform() } 현재 aaa.html과 new-form.jsp 파일이 같은 경로에 있는데 jsp 파일만 못찾겠다고 뜹니다.. 해결해 보려고 webConfig 파일 만들어서 설정도 해보고 properties파일에도 설정을 해보았는데 안되네요.. 무엇이 문제일까요?? WebConfig.java @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void configureViewResolvers(ViewResolverRegistry registry) { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setPrefix("/static/jsp/members/"); resolver.setSuffix(".jsp"); registry.viewResolver(resolver); } } application.properties spring.mvc.view.prefix=/static/jsp/members/ spring.mvc.view.suffix=.jsp resources/static/jsp/members/new-fom.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %> <html> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="/jsp/members/save.jsp" method="post"> username: <input type="text" name="username"> age: <input type="text" name="age"> <button type="submit">전송</button> </form> </body> </html> webapp폴더가 없이 resources폴더가 있는게 문제인걸까요? 김영한강사님 강읠르 보면 webapp/... 이런경로에 파일을 생성하시던데 저는 프로젝트를 생성하니 webapp폴더 없이 resources폴더만 있어서 그냥 사용하고 있는데..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 회원등록 강의 18분 쯤에서 강사님께서 설명 주시는 사이트에서 입력칸에 공백 발생시 return "members/createMemberForm"; 으로 다시 되돌려보내면서 오류화면으로 넘어가지 않으며 입력값은 그대로 유지 하되, 사용자에게 "OO 입력은 필수 입니다."라고 글자가 나타나게끔 설계를 해주셨습니다. 그런데 createMemberForm.html 파일을 보니 그 "~은 필수입니다."하는 문장은 찾아보기가 어려워서 어떤 코드에서 이 기능이 작동해서 "~은 필수입니다." 의 문장이 완성되고 출력이 되는지 궁금합니다. name값?을 줄 때 '이름'이라고 준 것 같은데 사이트에서는 어떻게 '회원 이름'이라고 출력이 되나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 여기에 질문 내용을 남겨주세요. v1에서는 response.getWriter().write("ok");, v2에서는 return "ok";을 해주시는데 이유가 뭘까요?? @PostMapping("/request-body-json-v1") public void requestBodyJsonV1(HttpServletRequest request, HttpServletResponse response) throws IOException { ServletInputStream inputStream = request.getInputStream(); String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8); log.info("messagebody={}", messageBody); HelloData helloData = objectMapper.readValue(messageBody, HelloData.class); log.info("username={}, age={}", helloData.getUsername(), helloData.getAge()); response.getWriter().write("ok"); } @ResponseBody @PostMapping("/request-body-json-v2") public String requestBodyJsonV2(@RequestBody String messageBody) throws IOException { log.info("messagebody={}", messageBody); HelloData helloData = objectMapper.readValue(messageBody, HelloData.class); log.info("username={}, age={}", helloData.getUsername(), helloData.getAge()); return "ok"; }
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. MemberServiceIntegrationTest을 수행하다가 자꾸 한정자 관련 오류가 떠서 처음부터 다시 진행하였는데요, 이번에는 MemberServiceIntegrationTest에서 import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; 의 import하는 부분에서 인식이 안됩니다.. 위와 같은 오류의 원인을 알고싶습니다 ㅜㅜ
1, 예제를 유지하기 위해서 AutoAppConfig 클래스에 @ComponentScan을 입력하시고, excludeFilters를 이용해서 @Configuration이 붙은 클래스들은 컴포넌트 스캔대상에서 제외하셨습니다! 그런데 AutoAppConfig에도 @Configuration이 붙어있는데 ApplicationConfig에 구성 정보로 AutoAppConfig를 넘기면 AutoAppConfig에도 @Configuration이 붙어있는데 @ComponentScan이 동작을 어떻게 하는지 조금 헷갈립니다ㅠㅠ 2, 컴포넌트 스캔을 사용하려면 먼저 @ComponentScan 을 설정 정보에 붙여주면 된다. excludeFilters 를 이용해서 설정정보는 컴포넌트 스캔 대상에서 제외했다. 여기서 설정정보라는게 뭘 의미하는 건가요??
3. 웹개발 코스 [Enterprise Architecture(EA) X 전자정부프레임워크]
아래오 ㅏ 같은 오류가 발생했는데, gpt는 example 폴더가 없다고 합니다. 이번 강의 후반부 25분 이후에 폴더들 삭제한 부분에서 문제가 발생한걸까요? GPT답변 제공해주신 로그에 따르면 Spring 애플리케이션 컨텍스트 초기화 중에 문제가 발생하고 있습니다. 구체적으로, egovframework.example.cmmn.EgovSampleExcepHndlr 클래스에 대한 ClassNotFoundException 이 발생하고 있습니다. 이 문제를 해결하기 위한 주요 사항과 단계를 아래에 설명합니다: 문제 원인 분석 클래스 미발견 : ClassNotFoundException 은 egovframework.example.cmmn.EgovSampleExcepHndlr 클래스가 클래스 경로에 존재하지 않음을 나타냅니다. 이는 의존성 문제일 수 있습니다. 의존성 확인 : EgovSampleExcepHndlr 클래스가 포함된 JAR 파일이 프로젝트 클래스 경로에 있는지 확인합니다. Maven을 사용 중이라면 pom.xml , Gradle을 사용 중이라면 build.gradle 파일에서 모든 의존성이 올바르게 선언되었는지 확인합니다. 패키지 구조 확인 : 패키지 구조가 올바르고 Spring 설정 파일에 명시된 경로와 일치하는지 확인합니다. 클래스 파일의 경로가 egovframework/example/cmmn/EgovSampleExcepHndlr.java 인지 확인합니다. Spring 설정 파일 확인 : Spring 설정 파일( context-aspect.xml 등)에서 해당 빈 정의가 올바르게 되어 있는지 확인합니다. 경로나 타입에 오타가 없는지 점검합니다. 클래스 컴파일 확인 : EgovSampleExcepHndlr 클래스가 올바르게 컴파일되어 WEB-INF/classes 디렉토리나 관련 JAR 파일에 있는지 확인합니다. 프로젝트 재빌드 : 프로젝트를 클린하고 재빌드하여 클래스 경로 문제를 해결합니다. Eclipse나 IntelliJ IDEA와 같은 IDE에서 "Clean" 및 "Rebuild" 옵션을 사용합니다. 배포 문제 확인 : 서버가 애플리케이션을 올바르게 배포하고 있는지 확인합니다. 배포를 제거하고 다시 배포하면 문제가 해결될 수 있습니다. 문제 해결 단계 클래스 경로 확인 : egovframework.example.cmmn.EgovSampleExcepHndlr 클래스가 빌드 출력 디렉토리( WEB-INF/classes 또는 JAR 파일)에 있는지 확인합니다. 의존성 업데이트 : Maven을 사용 중이면 mvn clean install 을 실행하여 프로젝트를 재빌드하고 모든 의존성을 올바르게 다운로드 받습니다. Gradle을 사용 중이면 gradle clean build 를 실행합니다. Spring 설정 파일 검토 : context-aspect.xml 파일을 열고 egovHandler 빈 정의가 올바른지 확인합니다. xml 코드 복사 <bean id="egovHandler" class="egovframework.example.cmmn.EgovSampleExcepHndlr" /> 클린 및 재빌드 : Eclipse: Project > Clean 그리고 Project > Build Project 를 실행합니다. IntelliJ: Build > Rebuild Project 를 실행합니다. 서버 재시작 : 변경 사항을 반영하기 위해 서버(예: Tomcat)를 제대로 재시작합니다. 이 단계를 따라가면 ClassNotFoundException 문제를 해결하고 Spring 애플리케이션 컨텍스트를 성공적으로 초기화할 수 있을 것입니다. 문제가 계속될 경우, 프로젝트 설정 및 의존성에 대한 추가 조사가 필요할 수 있습니다. Caused by: java.lang.ClassNotFoundException: egovframework.example.cmmn.EgovSampleExcepHndlr at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1308) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1120) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:398) at org.springframework.util.ClassUtils.forName(ClassUtils.java:284) at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:469) at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1607) at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1534) ... 65 more 6월 03, 2024 9:59:36 오후 org.apache.catalina.core.StandardContext startInternal SEVERE: 하나 이상의 리스너들이 시작하지 못했습니다. 상세 내역은 적절한 컨테이너 로그 파일에서 찾을 수 있습니다. 6월 03, 2024 9:59:36 오후 org.apache.catalina.core.StandardContext startInternal SEVERE: 이전 오류들로 인해 컨텍스트 [/Egov_WEB]의 시작이 실패했습니다. 6월 03, 2024 9:59:36 오후 org.apache.catalina.core.ApplicationContext log INFO: Closing Spring root WebApplicationContext 6월 03, 2024 9:59:36 오후 org.apache.coyote.AbstractProtocol start INFO: 프로토콜 핸들러 ["http-nio-8080"]을(를) 시작합니다. 6월 03, 2024 9:59:36 오후 org.apache.catalina.startup.Catalina start INFO: 서버가 [14048] 밀리초 내에 시작되었습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요 영상에서 나오는 UI랑 제 화면에서 띄운 UI랑 틀이 조금 달라보여서 질문 드립니다. 문제 없는 건가요? 왜 다르게 구현이 되었는지 이유가 있을까요?코드 문제 일까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] h2 데이터베이스에 테스트한 spring이 올라가지 않습니다. 약 6분 58초 강의 내용인데 따로 테스트 앞에 transaction을 하지도 않았는데 되지 않네요 ㅜ. 빨간색 글자가 뜨긴했는데 이 경고 때문일까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] <!DOCTYPE html> <html th:replace="~{template/layoutExtend/layoutFile :: layout(~{::title}, ~{::section})}" xmlns:th="http://www.thymeleaf.org"> <head> <title>메인 페이지 타이틀</title> </head> <body> <section> <p>메인 페이지 컨텐츠1</p> <div>메인 페이지 포함 내용1</div> </section> <section> <p>메인 페이지 컨텐츠2</p> <div>메인 페이지 포함 내용2</div> </section> </body> </html> html 태그안에 layout fragment에 title과 section을 넣었는데 만약에 section태그가 두개면 어떻게 꺼내서 사용 되는건가요? <section> <p>메인 페이지 컨텐츠1</p> <div>메인 페이지 포함 내용1</div> </section> <section> <p>메인 페이지 컨텐츠2</p> <div>메인 페이지 포함 내용2</div> </section> <!DOCTYPE html> <html th:fragment="layout (title, content)" xmlns:th="http://www.thymeleaf.org"> <head> <title th:replace="${title}">레이아웃 타이틀</title> </head> <body> <h1>레이아웃 H1</h1> <div th:replace="${content}"> <p>레이아웃 컨텐츠</p> </div> <footer> 레이아웃 푸터 </footer> </body> </html> 어떻게 꺼내서 사용을 하게 되는건지? 변수처럼 사용을 하면되는건가요? 만약에 section 두개중에 하나만 꺼내서 쓰고싶으면 어떻게 꺼내는지?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 강의 내용 그대로 했는데 에러가 나옵니다. ㅠ 16:54:35.080 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils -- Could not detect default configuration classes for test class [hello.hello_spring.service.MemberServiceIntegrationTest]: MemberServiceIntegrationTest does not declare any static, non-private, non-final, nested classes annotated with @Configuration. 16:54:35.185 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper -- Found @SpringBootConfiguration hello.hello_spring.HelloSpringApplication for test class hello.hello_spring.service.MemberServiceIntegrationTest . ____ _ /\\ / ___'_ __ ( _)_ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.3.0) 2024-06-03T16:54:35.496+09:00 INFO 6290 --- [hello-spring] [ main] h.h.s.MemberServiceIntegrationTest : Starting MemberServiceIntegrationTest using Java 17.0.11 with PID 6290 (started by pearlinezero in /Users/pearlinezero/Spring_study/hello-spring) 2024-06-03T16:54:35.497+09:00 INFO 6290 --- [hello-spring] [ main] h.h.s.MemberServiceIntegrationTest : No active profile set, falling back to 1 default profile: "default" 2024-06-03T16:54:35.966+09:00 INFO 6290 --- [hello-spring] [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. 2024-06-03T16:54:35.981+09:00 INFO 6290 --- [hello-spring] [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 10 ms. Found 0 JPA repository interfaces. 2024-06-03T16:54:36.277+09:00 INFO 6290 --- [hello-spring] [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default] 2024-06-03T16:54:36.309+09:00 INFO 6290 --- [hello-spring] [ main] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.5.2.Final 2024-06-03T16:54:36.329+09:00 INFO 6290 --- [hello-spring] [ main] o.h.c.internal.RegionFactoryInitiator : HHH000026: Second-level cache disabled 2024-06-03T16:54:36.531+09:00 INFO 6290 --- [hello-spring] [ main] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer 2024-06-03T16:54:36.549+09:00 INFO 6290 --- [hello-spring] [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2024-06-03T16:54:36.605+09:00 INFO 6290 --- [hello-spring] [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection conn0: url=jdbc:h2:tcp://localhost/~/test user=SA 2024-06-03T16:54:36.606+09:00 INFO 6290 --- [hello-spring] [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. 2024-06-03T16:54:37.187+09:00 INFO 6290 --- [hello-spring] [ main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) 2024-06-03T16:54:37.188+09:00 INFO 6290 --- [hello-spring] [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' 2024-06-03T16:54:37.315+09:00 WARN 6290 --- [hello-spring] [ main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning 2024-06-03T16:54:37.330+09:00 INFO 6290 --- [hello-spring] [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html] 2024-06-03T16:54:37.609+09:00 INFO 6290 --- [hello-spring] [ main] h.h.s.MemberServiceIntegrationTest : Started MemberServiceIntegrationTest in 2.299 seconds (process running for 3.18) Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended java.lang.IllegalArgumentException: id to load is required for loading
해당 방식은 FakerMailSender에 결국 테스트 의존성이생기게 된다고 생각하는데요. 현재 코드는 단순해서 개발자가 테스트 코드 수정시 확인할 부분이 없지만, 추후 객체의 구조가 변경되거나, 규칙이 추가 - 변경된다면 모든 테스트 코드의 요구사항에 맞도록 Faker객체의 구현 내용도 함께 변경되어야 할것같습니다. 하지만 항상 모든 테스트의 요구사항을 알기는 쉽지만은 않을것같은데요. 이러한 불편함을 극복하기 위한 방법이 있을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 검증 실패시 고객에게 다시 입력폼으로 돌아가게 해야한다 하셔서 저는 리다이렉트를 한다고 생각하였는데 강의에서는 바로 입력폼 뷰로 이동을 하셨습니다. 리다이렉트로 변경하여 실행하니까 모든 값들이 초기화 되고 오류 메시지도 발생이 안되는데 리다이렉트를 해도 모델에 담긴 에러메시지들과 아이템 객체에 사용자가 잘못입력한 값들도 같이 넘어가야 하는거 아닌가요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] "C:\Program Files\Java\jdk-17\bin\java.exe" --spring.profiles.active=prod -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.2\lib\idea_rt.jar=58809:C:\Program Files\JetBrains\IntelliJ IDEA 2023.2\bin" -Dfile.encoding=UTF-8 -classpath C:\study\spring-boot\external\build\classes\java\main;C:\study\spring-boot\external\build\resources\main;C:\Users\lgh80\.gradle\caches\modules-2\files-2.1\org.projectlombok\lombok\1.18.24\13a394eed5c4f9efb2a6d956e2086f1d81e857d9\lombok-1.18.24.jar;C:\Users\lgh80\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter\3.0.2\a9426629b5a83ad64fbe4e1d24081cccf4cdab14\spring-boot-starter-3.0.2.jar;C:\Users\lgh80\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-autoconfigure\3.0.2\42ad589ec930e05a2ed702a4940955ff97b16a8c\spring-boot-autoconfigure-3.0.2.jar;C:\Users\lgh80\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot\3.0.2\69d2e0a07f7df180a4aacdc47c47a3db656857dc\spring-boot-3.0.2.jar;C:\Users\lgh80\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-logging\3.0.2\1c5c71058a0297534d5c5f33a5d125bbbdb6a390\spring-boot-starter-logging-3.0.2.jar;C:\Users\lgh80\.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\lgh80\.gradle\caches\modules-2\files-2.1\org.springframework\spring-core\6.0.4\8e24ad493887023cf5fac93541c72516f8ed9f6a\spring-core-6.0.4.jar;C:\Users\lgh80\.gradle\caches\modules-2\files-2.1\org.yaml\snakeyaml\1.33\2cd0a87ff7df953f810c344bdf2fe3340b954c69\snakeyaml-1.33.jar;C:\Users\lgh80\.gradle\caches\modules-2\files-2.1\org.springframework\spring-context\6.0.4\4fffcbb7eb4f1e9f1a4c9d3ca60098f7c063fc05\spring-context-6.0.4.jar;C:\Users\lgh80\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-classic\1.4.5\28e7dc0b208d6c3f15beefd73976e064b4ecfa9b\logback-classic-1.4.5.jar;C:\Users\lgh80\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-to-slf4j\2.19.0\30f4812e43172ecca5041da2cb6b965cc4777c19\log4j-to-slf4j-2.19.0.jar;C:\Users\lgh80\.gradle\caches\modules-2\files-2.1\org.slf4j\jul-to-slf4j\2.0.6\c4d348977a83a0bfcf42fd6fd1fee6e7904f1a0c\jul-to-slf4j-2.0.6.jar;C:\Users\lgh80\.gradle\caches\modules-2\files-2.1\org.springframework\spring-jcl\6.0.4\2d6523d00fc40cdb2c2f409113447940d2c872b5\spring-jcl-6.0.4.jar;C:\Users\lgh80\.gradle\caches\modules-2\files-2.1\org.springframework\spring-aop\6.0.4\c47b65c09a5a6fc41293b6aa981fcbe24a3adcd0\spring-aop-6.0.4.jar;C:\Users\lgh80\.gradle\caches\modules-2\files-2.1\org.springframework\spring-beans\6.0.4\7d903607ecfcdefccd0d48aea8724632479b3e83\spring-beans-6.0.4.jar;C:\Users\lgh80\.gradle\caches\modules-2\files-2.1\org.springframework\spring-expression\6.0.4\a908e6d3c46fcd6b58221d8427bbaf284bbbee0c\spring-expression-6.0.4.jar;C:\Users\lgh80\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-core\1.4.5\e9bb2ea70f84401314da4300343b0a246c8954da\logback-core-1.4.5.jar;C:\Users\lgh80\.gradle\caches\modules-2\files-2.1\org.slf4j\slf4j-api\2.0.6\88c40d8b4f33326f19a7d3c0aaf2c7e8721d4953\slf4j-api-2.0.6.jar;C:\Users\lgh80\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.19.0\ea1b37f38c327596b216542bc636cfdc0b8036fa\log4j-api-2.19.0.jar hello.ExternalApplicationUnrecognized option: --spring.profiles.active=prodError: Could not create the Java Virtual Machine.Error: A fatal exception has occurred. Program will exit.Process finished with exit code 1다음과 같은 에러가 뜨는데 Chat GPT로 해도 이해가 안돼서 질문 남깁니다.
Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 1부
안녕하세요, context의 read와 write 부분을 듣다 궁금한 점이 생겨 질문을 남깁니다. Context는 체인이 맨 아래에서부터 위로 전파된다는 내용은 이해했습니다. 궁금한 점은 'Context read 읽는 동작이 Context write 동작 밑에 있을 경우에는 write된 값을 read할 수 없'는 동작을 컴퓨터는 어떻게 이해하고 실행하는지를 모르겠습니다. 위에서부터 아래로 코드를 읽어나가면 contextWrite()는 마지막에 읽히게 되니까요. 컴파일하면서 write의 위치가 바뀌어 write가 먼저 진행되는지 혹은 subscribe()를 만나기 전까지는 실제 stream이 동작하지 않아 write된 값이 저장돼 있는지..코드 작동 순서/원리가 궁금합니다. 감사합니다.
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.IllegalArgumentException: Name for argument of type [java.lang.String] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag.] with root cause 계속 위와 같은 에러가 떠서 gpt랑 구글링을 하니까 생성자 클래스에 @ConstructorProperties ({"number1", "number2"}) 어노테이션을 추가하라고 해서 추가했더니 값이 출력되는데 이 어노테이션을 작성하는게 맞나요? 또 다른 글에는 java compiler를 수정하라고 하는데 맞는지 궁금합니다 ! 저는 sts4로 진행중입니다 !
[질문 내용] 강의에서는 이렇게 수동 빈 등록으로 서비스와 레포지토리를 등록했는데 이렇게 자동 빈 등록을 하면 위와 같이 수동 빈 등록했던 인터페이스들을 모두 그냥 @Component 처리 해버리면 굳이 config 클래스를 만들지 않고도 알아서 빈 등록 및 인터페이스와 구현체 연결이 되는게 맞나요? 맞다면 번거롭게 config클래스를 만들면서 수동 빈 등록을 하는 이유가 궁금해요