묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결처음하는 파이썬 백엔드 FastAPI 입문 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
실전 프로젝트 코드
- 강의 영상에 대한 질문이 있으시면, 상세히 문의를 작성해주시면, 주말/휴일 제외, 2~3일 내에 답변드립니다 (이외의 문의는 평생 강의이므로 양해를 부탁드립니다.)- 강의 답변이 도움이 안되셨다면, dream@fun-coding.org 로 메일 주시면 재검토하겠습니다. - 괜찮으시면 질문전에 챗GPT 와 구글 검색을 꼭 활용해보세요~- 잠깐! 인프런 서비스 운영(다운로드 방법포함) 관련 문의는 1:1 문의하기를 이용해주세요. 이전에 수업에 관한 코드는 pdf파일로 공유 받았는데실전 프로젝트 코드는 어디서 받을수있나요????
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
viewPath설정의 오류인가?, 아니면 그저 컴퓨터 오류인가
안녕하세요 다른 질문들 보면서 저와 비슷한 것은 알겠지만 저와 다른 것 같아 여기 질문드려봅니다 제가 작성한 코드 : https://drive.google.com/file/d/1QYZwvaOXezKHGvpeHLRoYj9Z6e_OQPP1/view?usp=drive_link 여기서 http://localhost:8080/front-controller/v1/members/new-form주소로 구글크롬을 이용해 접근을 하게 되면 저는 이렇게 표시가 됩니다강의를 보면서 오류가 생겨 정말 며칠간 이것저것 코드도 다시 작성해보고 했는데 어느순간부터 이게 되질 않네요; 이부분의 1번의 FrontControllerServletV1이부분의 각 put이 제대로 동작하지 않는 것 같다고 지금 혼자 결론을 냈고, 디버깅도 해보려 노력했지만생각처럼 되질 않습니다 어지간하면 질문 안하고 혼자해보는 사람인데 너무 삽질을 많이하고 있어 질문드려봅니다 제 설명이 부족했다면 바로 추가드리겠습니다!질문 요약코드대로 스프링을 실행하고주소로 접근하면 왜 form이 안나오고 오류창이 뜨는지가 궁금+ 각 viewPath가 틀린게 아닌가 라는 gpt의 말이 있었지만 아시다시피 gpt가 헛소리를 많이하는 탓에 잘 모르겠습니다.v1, v2, v3 모두 정상작동해서 v5까지 다시 해볼 수 있도록 부탁드립니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
트랜잭션과 관련된 질문입니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. "JPA 사용 시 주의해야할 점은, 항상 “트랜잭션”이 있어야 한다"라고 해주셨는데, 그 말의 의미가 애플리케이션 서버가 DB 서버에 연결해서 데이터 관련 작업(쿼리를 날리는 등)시 무조건 트랜잭션이 필요하다는 말인가요?즉, JPA가 아닌 JDBC Template을 사용하더라도 무조건 DB와의 데이터 관련 작업 시 “트랜잭션”이 있어야 하나요?어떤 메서드엔 @Transactional이 없어도 되었고 어떤 메서드엔 필요했던 기억이 있어서 여쭤봅니다! 그리고, 트랜잭션이 걸려있을 때 애플리케이션에서 DB 서버로 쿼리를 날릴 때, "트랜잭션이 실행되고 DB에 쿼리가 날라가고 commit이 되서 DB에 데이터가 들어가는 순서" 일까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JPA와 관련된 질문입니다~
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 1)JPA를 사용하기위해 도메인 클래스에 @Entity나 @Id, @GeneratedValue를 달다가 확인하게 되었는데, 강의에선 javax.persistence.Id 이건데, 저는 지금 jakarta.persistence.Id에 있는 애노테이션이었습니다.그래서 궁금한 게 javax와 jakarta가 정확히 무엇이고, 일반 java랑 어떤 차이가 있는 개념인지도 궁금합니다!그리고 javax는 지금은 jakarta로 바뀐걸로 이해하면 되겠죠? 2)아래에 있는 JPA 예시 코드에서 setParameter(~~)의 역할이, 메서드의 인자로 받은 name을 setParameter로 넣어주면, 그게 쿼리의 where 조건의 값으로 들어가는 게 맞을까요?@Overridepublic Optional<Member> findByName(String name) { List<Member> result = em.createQuery("select m from Member m where m.name = :name", Member.class) .setParameter("name", name) .getResultList(); return result.stream().findAny();} 3)QueryDsl을 사용하면 동적 쿼리를 더 잘 다룰 수 있다고 해주셨는데 동적 쿼리와 정적 쿼리의 차이점이 제가 이해하고 있는 게 맞을까요?정적 쿼리 : findByName처럼 항상 같은 조건의 쿼리동적 쿼리 : 검색 조건에 따라, 조건이 동적으로 바뀌는 쿼리ex)이름 검색, 나이 검색 등등
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
AOP 관련 질문입니다~
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. AOP를 사용하면, 스프링이 뜨고 스프링 컨테이너에 예를 들어 MemberService 클래스의 객체가 스프링 빈으로 등록될 때, 가짜인 프록시 객체와 실제 객체 이렇게 2개가 다 등록이 되는 거라고 이해하면 될까요? 그래서, 처음에는 등록된 빈끼리 의존성을 주입할 땐 가짜 프록시 객체가 사용되다가, joinPoint.proceed() 메서드가 호출될 때 실제 객체가 호출되어서 사용되는 건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
안녕하세요. 이 로드맵 과정은 스프링 부트를 주로 활용하나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) - 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) - 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 아니오[질문 내용]여기에 질문 내용을 남겨주세요. 제가 친형걸로 이걸 들으려고 하는데 이 로드맵 전반적인 과정은 스프링인지 스프링부트인지 알고 싶어서 이렇게 질문드립니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
ArgumentResolver가 Service레이어 클래스, DB접근에 접근하는 클래스에 의존하도록 설계해도 괜찮나요?
문제 상황을 설명드리겠습니다. page 정보를 받아서 게시글 리스트, 페이지 정보를 View로 전달하는 Controller 코드 입니다. @GetMapping("/posts") public String getPosts(@RequestParam("page") String page, Model model) { // 사용자가 입력한 page문자열과 모든 post의 개수를 매개변수로 받아서 page 정보 생성 // 사용자가 입력한 page값을 검증 후 올바른 Page 정보를 반환한다. // "@#$", "hello" 같은 이상한 page값이 들어오면 모두 1로 변경한다. Page page = Page.validateAndCreate(page, postService.getPostsCount()); // page 정보를 사용하여 해당 page에 속하는 post들을 반환한다. List<Post> posts = postService.getPostList(page); // view로 데이터를 전달한다. model.addAttribute("page", page); model.addAttribute("posts", posts); }처음에는 위 방식으로 코드를 작성했습니다. 그런데 page정보 뿐 아니라, 다른 sorting정보, searching정보 등 여러 매개변수들이 들어오다 보니, Controller 코드가 복잡해진다고 느꼈습니다. 간단한 예시 코드는 아래와 같습니다.@GetMapping("/posts") public String getPosts(@RequestParam("page") String page, @ModelAttribute("sort") Sort sort, @ModelAttribute("search") Search search, .... 등등 , Model model) { // 여러가지 전처리 로직들 Page page = Page.validateAndCreate(page, postService.getPostsCount()); Sort sort = Sort.validateAndCreate(sort, ... ) Search search = Search.validateAndCreate(search, ...) ....등등 // 위에서 생성한 정보들을 바탕으로 DB에 쿼리를 날려 posts 데이터를 받아온다. List<Post> posts = postService.getPostList(page, sort, search, ...등등); // view에 필요한 데이터를 전달한다. model.addAttribute("page", page); model.addAttribute("posts", posts); model.addAttribute("sort", sort); ... 등등 }예시 코드는 문제상황 설명을 위해서 깔끔하게 작성했으나,실제로는 제 부족한 실력 탓에 지저분합니다. 저는 Controller 코드를 지저분하게 만드는 원인으로여러가지 전처리 로직들 (ex. Page.validateAndCreate(...) 코드들)View에 필요한 데이터들을 전달하는 model.addAttribute(...) 코드들 때문이라고 생각했습니다. 위 문제에 대한 해결방안으로 저는 ArgumentResolver를 사용하는 것을 떠올렸습니다.page에 대해서 @PageInfo라는 애노테이션을 정의하고, 이 애노테이션이 달린 매개변수에 대해서 1.여러가지 전처리 로직들을 수행해주고, 2.View에 자동으로 데이터들을 전달해주는, ArgumentResolver를 만들어주었습니다. Page에 대한 ArgumentResolver 코드는 다음과 같습니다. @RequiredArgsConstructor @Component public class PageRequestArgumentResolver implements HandlerMethodArgumentResolver { // 이 부분이 걱정입니다! ArgumentResolver가 특정 Service클래스에 의존해도 될까요? private final QuestionService questionService; @Override public boolean supportsParameter(MethodParameter parameter) { // @PageInfo를 가지고 있는 경우만 적용. boolean hasPageInfoAnnotation = parameter.hasParameterAnnotation(PageInfo.class); // 타겟변수가 Page 타입인 경우만 적용. boolean isPageClass = parameter.getParameterType().equals(Page.class); return hasPageInfoAnnotation && isPageClass; } @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { // url에서 page문자열 정보를 추출. String pageString = webRequest.getParameter("page"); // page문자열 정보를 검증 및 생성. Page page = Page.validateAndCreate(pageString, questionService.provideAllQuestionsCount()); // mavContainer에 해당 정보를 넣어서 View로 자동전달. if (mavContainer != null) mavContainer.addAttribute("page", page); // 컨트롤러의 매개변수에 page정보를 바인딩. return page; } } 위 처럼 page정보 뿐 아니라, 다른 자주쓰는 매개변수들에도 ArgumentResolver를 정의하고 적용하면, 아래와 같이 Controller코드가 굉장히 깔끔해진다고 느꼈습니다.@GetMapping("/posts") public String getPosts(@PageInfo Page page, @SortInfo Sort sort, @SearchInfo Search search, ... 등등, Model model) { // 여러가지 전처리 로직들은 ArgumentResolver가 해주기 때문에 코드가 사라집니다. // 비즈니스 로직을 수행합니다. List<Post> posts = postService.getPostList(page, sort, search, ...등등); // View에 필요한 데이터도 ArgumentResolver의 mavContainer를 통해서 자동 전달됩니다. // 컨트롤러에서 관심이 있는 posts 정보만 전달합니다. model.addAttribute("posts", posts); } 그런데 이게 정말 좋은 코드인지 판단이 잘 서질 않습니다. 그리고 ArgumentResolver가 다른 Service 클래스에 의존을 해도 되는지가 의문입니다. AI에게 물어보니, 순환참조 문제가 발생할 수 있기 때문에 웬만해서는 하지 말라고하는데...
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
ResponseStatusException 질문 (강의 13분 54초)
[질문 내용]ResponseStatusException에 세개의 파라미터가 담기는데, 세번째 파라미터가 무엇인지 정확히 이해가 가지 않습니다. 실제로 /api/response-status-ex2가 호출 되었을 때, IlleagalArgumentException이 발생한다면,그 대신에 HttpStatus.NOT_FOUND(404)를 내보내주고, "error.bad"를 메시지로 내보내준다는 뜻이 맞나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 서버가 로컬에 뜬다는 건 자바 JVM 안에서 뜬다고 보면 될까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 인텔리제이로 화살표를 눌러서 스프링 애플리케이션 서버를 실행한다는 것은, 자바 JVM 내부에서 스프링 서버가 뜨는거라고 생각하면 되려나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
DB 서버에 “소켓”으로 접근한다는 게 어떤 의미일까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.순수 JDBC 강의까지 듣고 질문이 생겨 올립니다~DB커넥션을 얻어 애플리케이션이 DB 서버에 "소켓"으로 연결된다고 하는데, 이 의미가 "네트워크 상에서 돌아가는 두 개의 프로그램 간 양방향 통신" 을 할 수 있게 소켓이라는 통(?)이 생겨서 연결된다고 보면 되려나요? 그리고, application.properties에 url에 jdbc:h2:tcp://localhost/~/test이렇게 적으면 소켓 연결이라고 하셨는데 이 url에 대한 더 자세한 이해를 하고 싶은데 이 url이 정확히 어떤 의미일까요? tcp는 OSI 7계층에서 어렴풋이 들어온 용어 같습니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@Pattern 사용시
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.@Pattern을 @NotBlank와 쓰면 에러 메세지가 같이 나오고 @NotNull와 같이 쓰면 순서가 @Pattern의 에러먼저 적용 됩니다. 순서를 설정하고 하나만 나오게 하려면 validator를 따로 만들어야만 가능한가요? 아니면 스프링에서 따로 제공하는 기능이 있을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
오류
A problem occurred configuring root project 'hello-spring'.> Could not resolve all artifacts for configuration 'classpath'. > Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.4.1. Required by: root project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.4.1 > Dependency requires at least JVM runtime version 17. This build uses a Java 8 JVM.* Try:> Run this build using a Java 17 or newer JVM.> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights.> Get more help at https://help.gradle.org.Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.For more on this, please refer to https://docs.gradle.org/8.11.1/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.인텔리제이에서 open 폴더로 hellospring 열었는데 해당 오류가 뜨네요 이거 뭔가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
서블릿 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]servlet hello 부분오류가 해결이 되지 않아 문의 남깁니다 Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.2025-01-09 11:09:37.846 ERROR 9180 --- [ main] o.s.boot.SpringApplication : Application run failedorg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletComponentRegisteringPostProcessor': Unexpected exception during bean creation; nested exception is java.lang.NoClassDefFoundError: javax/servlet/annotation/WebServlet package hello.servlet; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; @ServletComponentScan // 서블릿 자동 등록 @SpringBootApplication public class ServletApplication { public static void main(String[] args) { SpringApplication.run(ServletApplication.class, args); } } package hello.servlet.basic; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet(name="helloServelet", urlPatterns = "/hello") public class HelloServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("HelloServlet.service"); } }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JRE 버전 문제
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예[질문 내용]안녕하세요, 강의 너무 잘 보고 있는 취업 준비생입니다 !인텔리제이를 사용하며 강의를 따라가는 중인데, 윈도우 cmd에서 실행 시 하단 사진처럼 뜨더라고요찾아보니 jre의 버전 문제라고 하는데, UnsupportedClassVersionError 라는 오류라고 하더라고요컴파일된 클래스 파일이 현재 사용중인 jre 버전보다 더 최신 버전으로 컴파일되었다고 하는데, 이것을 해결할 방법이 있을까요 ? 혹은 해결하지 않고 이 버전을 유지하며 이번 강의 내용은 머리로만 이해하는 것이 좋을지 궁금합니다.해결에 도움이 될 수 있을까 하여 구체적인 오류를 남깁니다 !Exception in thread "main" java.lang.UnsupportedClassVersionError: com/example/demo/DemoApplication has been compiled by a more recent version of the Java Runtime (class file version 67.0), this version of the Java Runtime only recognizes class file versions up to 66.0at java.base/java.lang.ClassLoader.defineClass1(Native Method)at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1023)at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:524)at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:427)at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:421)at java.base/java.security.AccessController.doPrivileged(AccessController.java:714)at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:420)at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:592)at org.springframework.boot.loader.net.protocol.jar.JarUrlClassLoader.loadClass(JarUrlClassLoader.java:107)at org.springframework.boot.loader.launch.LaunchedClassLoader.loadClass(LaunchedClassLoader.java:91)at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)at java.base/java.lang.Class.forName0(Native Method)at java.base/java.lang.Class.forName(Class.java:529)at java.base/java.lang.Class.forName(Class.java:508)at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:99)at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64)at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:40) 현재 이렇게 실행하니 8080 서버는 들어가지는 것 같은데, hello 라는 부분 클릭 시 넘어가질 않네요 .. 추가로, 실행한 파일을 종료할 때 ls -arlth 라는 것을 입력하시던데, 이 명령어가 종료 명령어가 맞을까요 ..?거북이 마음으로 하나씩 의문들을 해결해나가겠습니다 좋은 강의 제공해주셔서 항상 감사드립니다 !!
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
QItem 생성 방법
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]QItem이 @Entity로 설정된 클래스 정보를 가져와서 동적으로 생성되는 것으로 이해했습니다.QItem이 생성되는 시점이 애플리케이션 실행 시점인 것 같은데,그렇다면 혹시, 새로운 엔티티를 만들었다면 해당 엔티티로 동적 코드를 작성하기 위해선 필히 애플리케이션을 한번 실행해주고 해야하는건가요??QItem을 생성하기 위한 이유로만 애플리케이션을 실행해야하는 그런 동작이 뭐랄까 좀 부자연스러운(?) 느낌이 드는데 혹시 다른 방법이 있을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
ViewResolver 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]강사님과 똑같이 코드를 짯는데 저는 실행이 돼지 않습니다.ViewResolver setup!이라고 문구가 발생하는데 어떤 부분을 확인해야할까요강사님과 같은 JAVA 및 HTML 파일 작성실행했으나 500 ERROR 발생파일의 경로 및 소스코드 확인했으나 이상 없음
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
클래스 내의 public 메서드 재사용
login 레포지토리 구현 과정에서 궁금한 점이 있어 질문드립니다. 현재상황findAll 메서드를 findByLoginId에서 활용함. 해당 메서드 활용이 다양한 면에서 불필요하다고 생각함 코드@Slf4j @Repository public class MemberRepository { private static Map<Long, Member> store = new HashMap<>(); private static long sequence = 0L; public Member save(Member member) { member.setId(++sequence); log.info("save: member ={}", member); store.put(member.getId(), member); return member; } public Member findById(Long id) { return store.get(id); } //문제의 부분 public Optional<Member> findByLoginId(String loginId) { return findAll().stream() .filter(m -> m.getLoginId().equals(loginId)) .findFirst(); } public List<Member> findAll() { return new ArrayList<>(store.values()); } } 불필요하다고 생각한 이유findAll 메서드는 public 메서드이기 때문에 클래스 사용자와 맞닿아 있음. 따라서, findAll의 구현방식이 달라진다면 다른 메서드에도 영향이 감 (메서드간 결합도가 높음)findAll이 public 메서드이기에 중복된 코드를 줄이기 위한 모듈화라고도 보기 어려움결합도와 관계 없이 findAll의 경우 ArrayList에 다시 감싸는 작업때문에 시간복잡도도 증가함그래서 저는 findAll 메서드를 활용하는 것이 아니라 그냥 아래와 같이 store.values()를 직접 호출하는 것이 더 좋은 코드가 아닌가라는 생각이 들어요(제가 결합도에 너무 집착하고 있는 것 같기도하네요) public Optional<Member> findByLoginId(String loginId) { return store.values().stream() .filter(m -> m.getLoginId().equals(loginId)) .findFirst(); } 예상 답변public 메서드라도 클래스 내부에서 재사용해도 상관없다. public 메서드를 클래스 내부에서 사용하는 것은 좋지 않지만, 현재와 같이 변경 가능성이 작은 경우 상관없다.성능은 조금 줄어들더라도 가독성이 우선이다. 그 정도의 성능저하로 보이진 않는다. 현재와 같이 간단한 메서드라면 재구현해도 상관이 없지만, 만약 findAll이 복잡한 로직의 메서드라면 재사용이 불가피하다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
addAttribute 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]현지 저는 사정상 이클립스로 진행을 하고 있는데요model.addAttribute 부분에서model.addAttribute (attributeName:"data", attributeValue:"hello!!"); 로 하면 오류가 나고model.addAttribute ("data","hello!!");로 수정하면 오류가 나지 않습니다 차이가 뭔지 알 수 있을까요
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
~v5까지를 이용해서 사이드 프로젝트를 해보려는데 막혔습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]v5 프론트 컨트롤러까지 해서 직접 사이드프로젝트를 해보려고 했는데, 서블릿이 인식이 안 되는 것인지 println이 콘솔창에 안 뜹니다 ㅠ package com.weblibrary.controller; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet(name = "frontController", urlPatterns = "/test/*") public class FrontController extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("FrontController.service"); } } 로컬주소/test/some 이런식으로 접속해보는데, 404가 뜨고 콘솔에는 println이 뜨질 않네요 ㅠㅠ
-
미해결[NarP Series] MVC 프레임워크는 내 손에 [나프1탄]
질문드립니다.
이렇게 설정되어있고, class파일도 잘 생성된것을 확인했는데, SEVERE: 경로 [/web]의 컨텍스트 내의 서블릿 [jsp]을(를) 위한 Servlet.service() 호출이, 근본 원인(root cause)과 함께, 예외 [JSP를 위한 클래스를 컴파일할 수 없습니다.: JSP 파일 [/sum.jsp]의 [5] 행에서 오류가 발생했습니다.MyUtil cannot be resolved to a type2: pageEncoding="UTF-8"%>3: <%@page import="kr.web.util.*" %>4: <%5: MyUtil my = new MyUtil();6: int sum = my.hap();7: %>8: <!DOCTYPE html>JSP 파일 [/sum.jsp]의 [5] 행에서 오류가 발생했습니다.MyUtil cannot be resolved to a type2: pageEncoding="UTF-8"%>3: <%@page import="kr.web.util.*" %>4: <%5: MyUtil my = new MyUtil();6: int sum = my.hap();7: %>8: <!DOCTYPE html>Stacktrace:]을(를) 발생시켰습니다.org.apache.jasper.JasperException: JSP를 위한 클래스를 컴파일할 수 없습니다.: 이와같은 오류가 발생합니다. 이유가 무엇일까요?