학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강의 잘 따라하고 있다가 orderV6 부분에서 갑자기 오류가 나옵니다 왜이럴까요ㅠㅠ? 셋팅이 바뀐 부분은 따로 없는 거 같습니다. yml부분데 h2.driver 부분이 오류가 나오네요ㅠㅠ java.lang.ClassNotFoundException: org.h2.Driver at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass (BuiltinClassLoader.java:64 1) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass (ClassLoaders.java:18 8) at java.base/java.lang.ClassLoader.loadClass (ClassLoader.java:52 0) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName (Class.java:46 7) at org.springframework.boot.devtools.restart.classloader.RestartClassLoader.loadClass (RestartClassLoader.java:12 1) at java.base/java.lang.ClassLoader.loadClass (ClassLoader.java:52 0) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName (Class.java:46 7) at org.springframework.util.ClassUtils.forName (ClassUtils.java:30 4) at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.driverClassIsLoadable (DataSourceProperties.java:19 4) at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.determineDriverClassName (DataSourceProperties.java:17 5) at org.springframework.boot.autoconfigure.jdbc.PropertiesJdbcConnectionDetails.getDriverClassName (PropertiesJdbcConnectionDetails.java:4 9) at org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration.createDataSource (DataSourceConfiguration.java:5 5) at org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari.dataSource (DataSourceConfiguration.java:11 7) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:7 7) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:4 3) at java.base/java.lang.reflect.Method.invoke (Method.java:56 8) at org.springframework.beans.factory.suppor t.SimpleInstantiationStrategy.instantiate (SimpleInstantiationStrategy.java:14 0) at org.springframework.beans.factory.suppor t.ConstructorResolver.instantiate (ConstructorResolver.java:64 7) at org.springframework.beans.factory.suppor t.ConstructorResolver.instantiateUsingFactoryMethod (ConstructorResolver.java:63 9) at org.springframework.beans.factory.suppor t.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod (AbstractAutowireCapableBeanFactory.java:133 4) at org.springframework.beans.factory.suppor t.AbstractAutowireCapableBeanFactory.createBeanInstance (AbstractAutowireCapableBeanFactory.java:116 4) at org.springframework.beans.factory.suppor t.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:56 1) at org.springframework.beans.factory.suppor t.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:52 1) at org.springframework.beans.factory.suppor t.AbstractBeanFactory.lambda$doGetBean$0 (AbstractBeanFactory.java:32 5) at org.springframework.beans.factory.suppor t.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:23 4) at org.springframework.beans.factory.suppor t.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:32 3) at org.springframework.beans.factory.suppor t.AbstractBeanFactory.getBean (AbstractBeanFactory.java:19 9) at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate (DependencyDescriptor.java:25 4) at org.springframework.beans.factory.suppor t.DefaultListableBeanFactory.doResolveDependency (DefaultListableBeanFactory.java:144 3) at org.springframework.beans.factory.suppor t.DefaultListableBeanFactory.resolveDependency (DefaultListableBeanFactory.java:135 3) at org.springframework.beans.factory.suppor t.ConstructorResolver.resolveAutowiredArgument (ConstructorResolver.java:90 7) at org.springframework.beans.factory.suppor t.ConstructorResolver.createArgumentArray (ConstructorResolver.java:78 5) at org.springframework.beans.factory.suppor t.ConstructorResolver.instantiateUsingFactoryMethod (ConstructorResolver.java:54 2) at org.springframework.beans.factory.suppor t.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod (AbstractAutowireCapableBeanFactory.java:133 4) at org.springframework.beans.factory.suppor t.AbstractAutowireCapableBeanFactory.createBeanInstance (AbstractAutowireCapableBeanFactory.java:116 4) at org.springframework.beans.factory.suppor t.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:56 1) at org.springframework.beans.factory.suppor t.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:52 1) at org.springframework.beans.factory.suppor t.AbstractBeanFactory.lambda$doGetBean$0 (AbstractBeanFactory.java:32 5) at org.springframework.beans.factory.suppor t.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:23 4) at org.springframework.beans.factory.suppor t.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:32 3) at org.springframework.beans.factory.suppor t.AbstractBeanFactory.getBean (AbstractBeanFactory.java:19 9) at org.springframework.beans.factory.suppor t.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:31 2) at org.springframework.beans.factory.suppor t.AbstractBeanFactory.getBean (AbstractBeanFactory.java:19 9) at org.springframework.context.suppor t.AbstractApplicationContext.getBean (AbstractApplicationContext.java:123 1) at org.springframework.context.suppor t.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:94 9) at org.springframework.context.suppor t.AbstractApplicationContext.refresh (AbstractApplicationContext.java:62 4) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh (ServletWebServerApplicationContext.java:14 6) at org.springframework.boot.SpringApplication.refresh (SpringApplication.java:75 4) at org.springframework.boot.SpringApplication.refreshContext (SpringApplication.java:45 6) at org.springframework.boot.SpringApplication.ru n (SpringApplication.java:33 4) at org.springframework.boot.SpringApplication.ru n (SpringApplication.java:135 4) at org.springframework.boot.SpringApplication.ru n (SpringApplication.java:134 3) at jpabook.jpashop.JpashopApplication.main (JpashopApplication.java:1 4) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:7 7) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:4 3) at java.base/java.lang.reflect.Method.invoke (Method.java:56 8) at org.springframework.boot.devtools.restart.RestartLauncher.ru n (RestartLauncher.java:5 0)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] BasicErrorController 질문있습니다. 저희가 직접만든 ErrorPageController 의 경우 오류 코드에 따라 맵핑되는 uri가 달라 각각 코드에 따라 다른 viewName을 리턴하여 각각 다른 화면을 보여주는 것이 가능해 보입니다. @Slf4j @Controller public class ErrorPageController { public static final String ERROR_EXCEPTION = "jakarta.servlet.error.exception"; public static final String ERROR_EXCEPTION_TYPE = "jakarta.servlet.error.exception_type"; public static final String ERROR_MESSAGE = "jakarta.servlet.error.message"; public static final String ERROR_REQUEST_URI = "jakarta.servlet.error.request_uri"; public static final String ERROR_SERVLET_NAME = "jakarta.servlet.error.servlet_name"; public static final String ERROR_STATUS_CODE = "jakarta.servlet.error.status_code"; @RequestMapping("/error-page/404") public String errorPage404(HttpServletRequest request, HttpServletResponse response) { log.info("error-page404"); printErr(request); return "error-page/404"; } @RequestMapping(value = "error-page/500", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<Map<String, Object>> errorPage500api( HttpServletRequest request, HttpServletResponse response) { log.info("API errorPage500"); Map<String, Object> result = new HashMap<>(); Exception ex = (Exception) request.getAttribute(ERROR_EXCEPTION); result.put("status", request.getAttribute(ERROR_STATUS_CODE)); result.put("message", ex.getMessage()); Integer statusCode = (Integer) request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE); return new ResponseEntity<>(result, HttpStatus.valueOf(statusCode)); } @RequestMapping("/error-page/500") public String errorPage500(HttpServletRequest request, HttpServletResponse response) { log.info("error-page500"); printErr(request); return "error-page/500"; } public void printErr(HttpServletRequest request) { log.info("ERROR_EXCEPTION : {}", request.getAttribute(ERROR_EXCEPTION)); log.info("ERROR_EXCEPTION_TYPE : {}", request.getAttribute(ERROR_EXCEPTION_TYPE)); log.info("ERROR_MESSAGE : {}", request.getAttribute(ERROR_MESSAGE)); log.info("ERROR_REQUEST_URI : {}", request.getAttribute(ERROR_REQUEST_URI)); log.info("ERROR_SERVLET_NAME : {}", request.getAttribute(ERROR_SERVLET_NAME)); log.info("ERROR_STATUS_CODE : {}", request.getAttribute(ERROR_STATUS_CODE)); log.info("dispatcherType = {}", request.getDispatcherType()); } } 하지만 BasicErrorController의 어떤 errorCode가 오더라도 전부 /error로 매핑이 되어 반환값도 viewName이 아니라 ModelAndView이어 이해해 약간의 어려움을 겪고 있습니다. 일단 제가 추상적으로 생각했을때 BasicErrorController의 errorHtml에서 반환받는 ModelAndView를 Servlet에서 받아 ModelAndView에 있는 "error"라고 하는 viewName을 directory 이름 으로 사용하고 model에 들어있는 status를 조합하여 RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath+"/"+model.getAttribute("status"); 이런느낌의 로직으로 처리한다 라고 이해하면 제대로 이해하고 있는게 맞을까요??? 추상적으로 이런 느낌이겠지정도고 확신이 들지 않아 질문합니다. @Controller @RequestMapping({"${server.error.path:${error.path:/error}}"}) public class BasicErrorController extends AbstractErrorController { private final ErrorProperties errorProperties; public BasicErrorController(ErrorAttributes errorAttributes, ErrorProperties errorProperties) { this(errorAttributes, errorProperties, Collections.emptyList()); } public BasicErrorController(ErrorAttributes errorAttributes, ErrorProperties errorProperties, List<ErrorViewResolver> errorViewResolvers) { super(errorAttributes, errorViewResolvers); Assert.notNull(errorProperties, "ErrorProperties must not be null"); this.errorProperties = errorProperties; } @RequestMapping( produces = {"text/html"} ) public ModelAndView errorHtml(HttpServletRequest request, HttpServletResponse response) { HttpStatus status = this.getStatus(request); Map<String, Object> model = Collections.unmodifiableMap(this.getErrorAttributes(request, this.getErrorAttributeOptions(request, MediaType.TEXT_HTML))); response.setStatus(status.value()); ModelAndView modelAndView = this.resolveErrorView(request, response, status, model); return modelAndView != null ? modelAndView : new ModelAndView("error", model); } @RequestMapping public ResponseEntity<Map<String, Object>> error(HttpServletRequest request) { HttpStatus status = this.getStatus(request); if (status == HttpStatus.NO_CONTENT) { return new ResponseEntity(status); } else { Map<String, Object> body = this.getErrorAttributes(request, this.getErrorAttributeOptions(request, MediaType.ALL)); return new ResponseEntity(body, status); } } //생략
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니오 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 수업내용 글들은 어디서 확인 할수있나여?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? ( 예 /아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ( 예 /아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 /아니오) [질문 내용] 총 4개의 Order가 있고, 다음과 같이 xToOne연관관계를 가진 Member와 Delivery까지 페치조인해서 가져온 상황입니다. 여기서 Batchsize가 2라고 가정하고, Order를 순차적으로 돌아가면서 OrderItems에 접근하게 된다면, 다음 그림과 같이 orderItems가 로딩이 되는 것인가요? order.stream ().forEach(o -> o.getOrderItems().getPrice()) (첫 번째) Batchsize가 2이므로 첫 두 Order에 대한 orderItems 로딩 (두 번째) Batchsize가 2이므로 그 다음 두 개의 Order에 대한 orderItems 로딩
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] HashSet의 코드를 보니 HashMap을 사용하여 구현이 되어있는데 실제 구현도 결국에는 강의 내용처럼 배열안에 LinkedList 나 TreeSet으로 구현과 최적화가 되는건가요?
안녕하세요. 터미널에서 h2.sh이 안됩니다. h2 w.bat을 직접 열어서 연결을 누르면 이런 화면이 나오긴 합니다. java --version 화면입니다. H2환경 별수 설정 화면입니다. h2.sh 를 폴더에서 더블클릭해서 실행시키면 명령프롬프트 창이 뜨면서 Error: Could not find or load main class org.h2.tools .Console Caused by: java.lang.ClassNotFoundException: org.h2.tools.Console 라고 잠깐 뜨고 창이 닫힙니다. 홈에는 test.mv .db파일 있습니다. 어떻게 하면 될까요?
[질문 내용] 여기에 질문 내용을 남겨주세요. https://drive.google.com/drive/folders/1-OMPceoH7sl_mkET-FmLH2xDZXuGfo4d mybatis를 적용시키고 ItemRepositoryTest를 실행시켰는데 오류 로그가 많이 떠서 무슨 문제인지 정확히 판단이 안되네요...일단 mybatis 관련 파일들은 제대로 쓴것같긴한데 오류가 생긴걸 보면 mybatis 적용이 안된것같은데 어디서 잘못되었는지 모르겠습니다
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
spring: datasource: url: "jdbc:mysql://localhost/library" username: "root" password: "비밀번호" driver-class-name: com.mysql.cj.jdbc.Driver 위와 같이 application.yml 파일을 작성했는데, 사용자 등록을 하면 서버 내부 오류라고 뜨면서 아무것도 안되더라구요.개발자 도구로도 봤는데 뭐가 문제인지 잘 모르겠어서 구글을 찾아보다가 jpa: database: mysql hibernate.ddl-auto: update show-sql: true application.yml 파일에 추가로 이걸 입력하니까 정상적으로 작동하네요.. 혹시 이렇게 두고 실행해도 괜찮은건지 여쭤보고싶었습니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요 강의 중반에 bulid한 이후 맥 환경에서 서버 종료하는 방법은 알려주셨는데 혹시 윈도우 환경에서는 서버를 종료하는 방법이 있는지 궁금합니다.
안녕하세요. 다른 질문글들을 다 참고하여 따라 해보았으나 업로드가 되지 않아 질문 남기게 되었습니다. [질문 내용] 한글 주소로 사용하지 않기 위해 로컬디스크 C에 file을 만들어 진행하였는데 사진과 같은 오류가 발생합니다. (노랗게 칠한부분은 한글로 제이름입니다.) [구글 드라이브 주소] https://drive.google.com/file/d/1VW52xdG7KyWdewGShZijEcJjhXc2v_4w/view?usp=sharing
https://www.inflearn.com/questions/1277199/%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%B2%98%EB%A6%AC%ED%95%98%EA%B8%B0-%EC%84%B8%EC%85%98-%EC%A7%81%EC%A0%91-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EA%B4%80%EB%A0%A8-%EC%A7%88%EB%AC%B8%EC%9E%85%EB%8B%88%EB%8B%A4 질문에 대해서 세션은 서버에 저장되고, 쿠키는 클라이언트에 저장된다는걸 깜빡했네요.... 추가질문입니다. 서로 다른 프로그렘들이 SESSION_COOKIE_NAME 을 동일하게 사용한다면 중복으로 인한 문제가 발생하겠네요? 그렇다면 이를 회피하기 위한 방법도 있나요?
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 왜 서비스에 트랜잭션을 적용하냐는 다른 분의 질문에 하나의 트랜잭션으로 묶어서 사용하기 위함이라고 답글이 달린걸 봤는데 이것또한 그러한 이유때문인가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요:) 강의 너무 잘듣고있습니다. 혹시 실제 프로그래머스 툴로 코딩테스트를 본다면, 빌트인 함수 (예, Character.isAlphabetic..) 들은 이클립스타 인텔리제이처럼 자동완성 되나요? 검색은 안될지라도.. 혹 Java api docs 라도 제공 되는지 궁금합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] ScannerWhile2 코드를 다음과 같이 int sum = num1 + num2; System.out.println("두 숫자의 합:" + sum); 내용을 else문 안에 적는 것과 else 문을 쓰지 않고 강의처럼 적는 것은 어떻게 적나 상관없는 건가요? if(num1 == 0 && num2 == 0){ System.out.println("프로그램 종료"); break; } else{ int sum = num1 + num2; System.out.println("두 숫자의 합:" + sum); }