안녕하세요. 최초에 스프링부트 파일을 열고 모델을 빌드했을 때 문제가 발생하여 질문 남깁니다. 자바 버전의 문제인가 싶어 java8, java17 둘 다로 해봤는데 여전히 오류가 사라지지 않습니다. 오류로그와 plugins는 다음과 같습니다. No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.1.3 was found. The consumer was configured to find a library for use during runtime, compatible with Java 8, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '8.2.1' but: plugins { id 'java' id 'org.springframework.boot' version '3.1.3' id 'io.spring.dependency-management' version '1.1.3' } 감사합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 제가 V5구조를 제대로 이해했는지 헷갈려서 질문글 올렸습니다. 핸들로 = 컨트롤러 라고 생각하고있으며, 핸들러 매핑 정보에서 컨트롤러를 찾아오고, 핸들러 어댑터 목록에서 찾아온 핸들러(컨트롤러)를 처리할 수 있는 어댑터를 찾아온다. 어댑터가 없는 경우 해당 컨트롤러는 지원하지 않는 컨트롤러여서 다른 컨트롤러로 개발을 해야한다. 어댑터가 있는 경우, 찾아온 어댑터의 파라미터로 핸들러 매핑 정보에서 찾은 핸들러를 파라미터로 넘겨줌으로써 사용하고자 하는 핸들러를 내부 호출하고 아케텍처 구조에 맞게 처리하여 ModelView를 반환해준다. 아키텍처 구조에 맞게 처리한다는 것은 v4 컨트롤러는 view-name을 반환하지만 FrontController에서는 view-name이 아닌 ModelView 객체를 사용해야하니 어댑터 내부에서 ModelView를 반환하도록 처리한다는 의미입니다. 이러한 아키텍처를 사용하면 A개발자는 v1 컨트롤러로, B개발자는 v2 컨트롤러로 개발을 하고싶을 수 있는데, 이때 핸들러 어댑터를 통해 실제 컨트롤러를 호출하기 때문에 핸들러 어댑터가 서로 다른 컨트롤러를 맞춤 스펙으로 내부에서 처리(110v -> 220v 바꿔주기)해주기때문에 개발의 유연성이 확대 로 이해했습니다. 혹시 잘못 이해한 부분이 있을까요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] SpringMemberControllerV1,V2,V3에서 newForm , save , members 메서드들이 RequestMappingHandlerMapping 에 핸들러 매핑정보로 등록되어있고, RequestMappingHandlerAdapter 가 V1,V2,V3들의 모든 매서드들을 처리하는 것으로 이해하였습니다. 여기서 SpringMemberControllerV1, V2, V3의 newForm , save , members 메서드들은 인자값과 반환값이 다릅니다. V1,V2 인자: HttpServletRequest , HttpServletResponse 반환: ModelAndView V3 인자: RequestParam , Model 반환: String 하나의 어뎁터로 인자값과 반환값이 다른 핸들러들를 모두 처리할 수 있는 점이 이해가 잘 되지 않았습니다. RequestMappingHandlerAdapter 를 살펴보았을때, HttpServletRequest , HttpServletResponse 를 인자로 받고 ModelAndView 를 반환하는 handleInternal 함수만 찾을 수 있었습니다. 위의 3가지 이유로 ` RequestMappingHandlerAdapter V1,V2 버전을 처리하는 것은 이해하였지만, V3를 처리할 수 있는 이유가 무엇인지 궁금합니다. 제가 추측하는 이유는 다음과 같습니다. RequestMappingHandlerAdapter 가 V1,V2를 처리하고 V3를 따로 처리하는 어뎁터가 있나요? RequestMappingHandlerAdapter 가 V1,V2,V3를 모두 처리할 수 있게하는 애노테이션의 기능이 있나요?
JPA Member 작성 중 오류가 발생하여 질문 드립니다. import javax.persistence.Entity; import jakarta.persistence.Entity; 모두 시도 해봤는데 안됩니다. gradle 프로젝트를 reload 하더라도 Unable to load class 'org.gradle.api.plugins.MavenPlugin'. This is an unexpected error. Please file a bug containing the idea.log file. 이런 에러만 계속 발생합니다. maven플러그인이 사라졌다고 해서 gradle 버전변경도 시도해보고 자바 버전 변경도 시도해 봤지만 해결하지 못했습니다.
아래 코드와 같이 webconfig 에 대한 코드를 치고 봤더니 3번째 메서드 logFilter()는 @Bean을 붙여주어서 이 주석을 해제하면 웹설정이 동작하는건 이해가 가는데 첫번째 두번째 메서드는 WebMvcConfigurer 인터페이스의 메서드들을 오버라이딩해서 구현하고 @bean을 안붙였는데 웹 설정이 어떻게 적용이 되는지 궁금합니다. @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LogInterceptor()).order(1).addPathPatterns("/**").excludePathPatterns("/css/**","*.ico","/error-page/**") ; //오류 페이지 경로 제외 } @Override public void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) { resolvers.add(new MyHandlerExceptionResolver()); } //@Bean public FilterRegistrationBean logFilter(){ FilterRegistrationBean<Filter> filterFilterRegistrationBean = new FilterRegistrationBean<>(); filterFilterRegistrationBean.setFilter(new LogFilter()); filterFilterRegistrationBean.setOrder(1); filterFilterRegistrationBean.addUrlPatterns("/*"); filterFilterRegistrationBean.setDispatcherTypes(DispatcherType.REQUEST,DispatcherType.ERROR); return filterFilterRegistrationBean; }
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요, 강의를 듣다가 궁금한점이 생겼습니다. 이제 핸들러 어댑터에서 support를 사용했는데 해당 컨트롤러를 처리할 수 있는 핸들러 어댑터가 2개 이상일때는 어떤 식으로 처리를 해주는게 똑똑하게 처리한걸까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 프로젝트를 새로 생성한 다음에 매번 Annotaion Processors를 체크 해주는걸로 알고있는데, 체크를 안해줘도 lombok 사용이나 코드가 실행되는데 문제가 없었던것 같습니다. 혹시 어떤 이유로 해당 기능을 체크해주는 건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 다른 방식도 물론이겠지만 GET방식으로 데이터를 전송하다 보면 간단한 해킹 공격으로도 해킹당하기 매우 쉬울거같은데 이런 부분은 Spring Security를 배우면 알수있는건가요? 아니면 네트워크 보안쪽으로 따로 배우는 무언가가 있는건가요 ?
@GetMapping("/basic-objects") public String basicObjects(HttpSession session) { ... } 위 컨트롤러 작성하는 부분입니다. 관련된 html 파일은 basic-objects 인데, ${#session} 으로 세션을 꺼내고 ${session} 으로도 세션을 꺼내네요. 이게 가물가물한데 컨트롤러 메서드에서 파라미터로 호출하면 자동으로 모델에 넣어주기 때문에 thymeleaf 에서 ${session} 을 꺼낼 수 있는거죠?
SpringEL강의에서 이해한 바로는 ${item.itemName}은itemName필드의 Getter를 호출해서 그 값을 받아오는걸로 이해했는데 강의에서 th:field="${item.itemName}"을 했을 때 id 와 name값이 "itemName"인지 이해가 안됩니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 단순하고 실용적인 컨트롤러 - v4 강의 10분23초쯤에 F2를 눌러서 파라미터 추가하는게 있는데 어떻게 하는거예요? 해도 안되는데여,,ㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요 질문이 있어서 글 남겨요. BasicController에서 @GetMapping의 경로를 입력해줄 때 @GetMapping("/variable")와@Getmapping("text-basic")으로 이 둘은 '/'의 유무로 차이점이 생기는데 '/'를 붙이는 것과 안 붙이는 것의 차이를 알 수 있을까요?
질문은 아니고 해결한 문제가 있어서 커뮤니티 질문 글에라도 올립니다! [질문 내용] View 환경설정 강의에서 thymeleaf URI 설정 오류 해결법 중 하나를 찾아서 말씀드립니다 현재는 2023.08.28 이고 강의 초반에 IntelliJ community 버전을 사용해도 괜찮다고 하셔서 community 버전을 사용하고 있었는데 인텔리제이 커뮤니티 버전을 사용하게되면 <html xmlns:th="~ thymeleaf.org "> 의 thymeleaf uri가 안 가져와집니다. 그 이유는 인텔리제이 community버전에선 application.properties를 지원하지 않기 때문인 것 같습니다. 그래서 IDEA 버전으로 변경한 뒤 잘 돌아갑니다! 그럼 참고하시고 저와 같이 시간 날리지 않으셨으면 좋겠습니다 열공하세요!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 해당 강의내용을 보다보니 thymeleaf와 같은 작용을 하되 더 비효율적인거같은데 thymeleaf보다 더 좋은점이있나요 ?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. 처음 gradlew.bat 명령어는 성공적으로 실행되었으나 gradlew build 명령어 입력시 오류가 납니다.. 찾아보니 자바의 버전이 다르다고 하는데 cmd에서 java -version해보면 11버전 나오구요 build.gradle에서도 11로 되어있습니다 그외 문제가 되는 사항 모두 사진으로도 첨부해놨듯이 버전 11로 되어있는데 어디서 오류가 나는걸까요 ..