묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
main 메서드의 클래스 위치변경
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]제가 main 메서드가 존재하는 클래스의 위치를 변경하였는데요.변경 후 부터 class not find 오류가 발생해서 클래스를 찾을 수 없다고 하는거 같은데 한 번 main 메서드가 존재하는 클래스를 만들고 나면 위치를 변경시키면 안 되는건가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
dto사용시 errors.properties 필드명
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]ItemDto로 요청을 받았을때 에러메세지가 NotNull.item.itemName은 되고 NotNull.itemDto.itemName은 왜 안되는걸까요? itemDto에서 item을 검증한다는걸 어떻게 아는지도 모르겠습니다
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
gradle 질문입니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.gradle jvm에서 openjdk 22 쓰고 있는데 정상적으로 작동되는거 같은데 java 17로 바꿔줘야 할까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
java 17은 어디서 다운 받으면 되나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. java 17은 어디서 다운 받으면 되나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
gradle 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.이렇게 뜹니다 해결방법 알려주세요
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
실무에서는 JWT를 사용하지않고, HttpSession을 사용하나요?
보안때문에 Spring Security의 JWT, CSRF 공부를 하려고 했는데... 실무적으로는 많이 사용하지않나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
AutoWired 오류와 Bean
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]1. 저는 MemeberService 쪽에서 @AutoWired를 해주는 부분에서 노란줄이 생기던데 생성자가 하나이기 때문에 생략가능해서 뜨는건가요?강사님이 계속 Bean이라고 언급하시는데 Bean이라는게 뭔지 궁금합니다. 이건 다음 강의에서 배울 수 있는건가요?
-
미해결처음하는 파이썬 백엔드 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"); } }