[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 선생님께서 DispatcherServlet은 스프링 부트 실행 후 톰캣 서버가 띄워지면서 자동으로 DispatcherServlet이 서블릿으로 등록된다고 말씀해주셨는데, 자동으로 서블릿으로 등록하려면 @ServletComponentScan 어노테이션이 필요한 것 아닌가요? 그런데 스프링 부트 애플리케이션 처음 생성한 후 최상위 Application 클래스의 어노테이션은 @SpringBootApplication만 존재하고 @ServletComponentScan은 제가 임의로 만들어줘서 생성된 것인데 어떻게 스프링 부트의 톰캣 서버가 DispatcherServlet을 자동으로 서블릿으로 등록해주는지 궁금합니다
MyBatis 버전도 낮춰보고 코드도 비교해보고 했는데 자꾸 Invalid bound statement오류가 발생합니다. 혹시 어떤 게 문제일까요.. 제가 잘 못 찾는 건가요..? 코드 : https://drive.google.com/file/d/14j1mBlyOWm9aELoBGtqbPQ6AAwla6DX5/view?usp=drive_link
프론트에서 request를 보내서 RequestDto에 데이터가 바인딩 될 때, List가 안오면 빈array가 바인딩 되도록 하는 것은 RequestDto의 생성자에서 해야하나요? 아니면 공통적으로 처리하게 만들 수 있는 건가요? 혹은 빈array라도 프론트에서 보내야하는 건가요?
교수님 안녕하십니까 교수님의 수업을 정말 즐기면서 듣고있는 AI빅데이터 전공 대학생입니다. 교수님의 강의 피마 인디언 당뇨병 예측 편을 보고 여태 배운 것을 백분 활용하여 제 방식대로 따로 모델을 구현을 해보았는데요. 먼저 임신횟수와 Outcome을 제외한 나머지 column들에 있는 0 값들은 모두 결측치로 판단하고 평균 값으로 대체하였습니다. RandomForestClassifier 알고리즘을 사용하고 GridSearchCV 함수를 통해 best estimator를 추출였습니다. 정밀도와 재현율이 동시에 높으면 좋지만 재현율이 증가하면 정밀도가 하락하는 현상(trade-off) 때문에 둘 중 하나를 선택해야 했고 이 피마 인디언 당뇨병 데이터 셋 같은 경우 병의 발견 목적으로 모델을 제작한다고 했을 때 실제로 당뇨병인데 모델이 당뇨병이 아니라고 예측하는 것이 치명적이라고 생각하여 정밀도 보다는 재현율을 중점적으로 보았습니다. 그리하여 precision_recall_curve 함수를 통해 최적의 재현율과 F1_score얻은 threshold 값을 추출하였습니다. 제가 얻은 값은 오차 행렬 [[72 28] [ 4 50]] 정확도: 79.22% , 정밀도: 64.10% , 재현율 92.59%, F1_Score: 75.76% 임계값: 0.32212471005503873 입니다. 오차 행렬을 보았을때도 한쪽에 치우쳐있는 불균형도 없다고 판단하였고 정밀도와 재현율 f1_score도 괜찮게 나왔다고 판단했습니다. 임계값을 0.32212471005503873로 주었을 때 roc_auc_score는 0.82296이라는 1에 꽤나 근접한 수치를 얻었습니다. 질문1: 이런식으로 모델을 찾아가는 방식이 옳은 방식인지 궁금합니다. 질문2: 제가 선택한 모델을 사용한다고 한다면 매번 RandomClassifier로 fit한 model을 Binarizer을 통해서 threshold 값을 매번 지정해주어야 하는건가요? 애초에 처음 모델을 fit할 때 임계값을 제가 부여는 못하는 것일가요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 해당 강의 테스트 코드 전체가 코드가 안보이던데 첨부된 소스코드에 없는드 싶습니다. 강의 영상에는 전체 코드가 생략되어 있다보니 질문 드립니다. 감사합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] MemberSaveControllerV3와 MemberListControllerV3에서 process 메서드가 실행될 때마다 새로운 ModelView객체를 생성하는데, 해당 컨트롤러로 들어오는 url은 같으므로 이를 싱글톤으로 만들면 메모리 관점에서 더 좋은것 아닌가요? 이를 따로 고려하시지 않은건지 아니면 다른 이유가 있는지 궁금합니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강의를 보면 MemberService의 경우 구현과 역할을 분리하지 않고 클래스 하나에서 전부 처리하는데 왜 역할과 구현을 따로 분리하지 않나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요.sendError 나 Exception 발생 시 내부적으로 호출될 컨트롤러 (/error-page/404, /error-page/500) 을브라우저에서 url 을 직접 입력해서도 호출할 수 있는데이러한 접근은 보안 상에 큰 문제가 없을 것 같은데 굳이 막지 않아도 되는 걸까요?
@GetMapping("/nonModelAttribute") public void getList(Page page) { } @GetMapping("/modelAttribute") public void getList(Model model,@ModelAttribute Page page) { } @Slf4j @Component public class PageArgumentResolver implements HandlerMethodArgumentResolver{ @Override public boolean supportsParameter(MethodParameter parameter) { // TODO Auto-generated method stub return parameter.getParameterType().equals(Page.class); } @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { return null; } } 강의에서 위 두개가 같다고 하셨는데 위의 /nonModelAttribute의 요청의 경우 Page 객체의 경우에는 Argument에서 객체를 만들지않으면 아예 null이 들어오기때문에 ArgumentResolver를 통해서 객체가 생성이 된다는것을 알수있는데 /modelAttribute의 경우에는 해당 부분에서 객체를 생성하지않아도 객체가 생성이 되던데 두개의 차이점이 있는건가요?? 그리고 만약에 차이가 있다면 ModelAttribute의 객체는 어디서 생성이 되는건가요?
안녕하세요. 강의 듣다보면 선생님께서 추상화라는 말씀을 자주 하시는데요 프로그래밍에서 추상화라는 말이 잘 와닿지가 않습니다ㅠㅠ 선생님 강의 외에도 다른 강의나 서적들도 보면 추상화라는 말이 꽤 나오는걸 볼 수 있는데 그때마다 추상화라는걸 어떻게 생각해야 할 지 잘 모르겠어서 질문 드려봅니다...
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 회원가입 테스트에서 이름으로 테스트하는 대신 아이디를 비교하는 테스트로 해도 되나요? 이런 식으로요! // then assertThat(saveId).isEqualTo(member.getId());
안녕하세요, 수업을 다 듣고 따로 프로젝트를 생성하여 에러 메시지를 errors.properties에서 작성한 후 적용 여부를 확인해봤는데 적용이 되지 않아 질문드립니다. 프로젝트 환경 Spring Boot 3.2.1 / Java 17 / Jar Packaging / IntelliJ IDEA 입니다. 설정 및 작성 코드 application.properties spring.messages.basename=messages,errors errors.properties #추가(스프링이 생성한 기본 오류 메시지 코드 설정하기) typeMismatch.java.lang.Integer = 숫자를 입력해주세요!!!!! typeMismatch = 타입 오류입니다!!!! #Bean Validation 추가 NotNull.validation.minVal = 널 안됨!! Range={0}, {2} ~ {1} 허용 Max={0}, 최대 {1} NotNull={0} Null 안됨!!!! 검증 대상 객체 @Data @NoArgsConstructor @AllArgsConstructor public class Validation { // @NotNull(message = "값 필수 입력!") // @NotNull(message = "{NotNull}") @NotNull @Min(1) private Integer minVal; @Max(100) private Integer maxVal; @Range(min = 10, max = 100) private Integer rangeVal; } 컨트롤러 @Slf4j @RestController public class ValidationController { @GetMapping("/test") public String setValues(@Validated @ModelAttribute Validation validation, BindingResult bindingResult) { log.info("validation={}", validation); if (bindingResult.hasErrors()) { List<FieldError> fieldErrors = bindingResult.getFieldErrors(); for (FieldError fieldError : fieldErrors) { log.info("errorMessage={}", fieldError.getDefaultMessage()); } } return "OK"; } } 위와 같이 작성을 하였고 에러를 발생시켜 보면 errorMessage={} 의 로그 부분에서 errors.properties에 설정한 메시지가 아니라 스프링에서 기본으로 제공하는 오류 메시지가 출력 됩니다. 여러가지 테스트 결과 application.properties와 errors.properties 자체를 인식하지 못하는 건가 했지만 파일을 인식하는 것을 확인함 애너테이션에 메시지를 직접 적용하는 것은 적용이 됨 @NotNull(message = "{NotNull}") 과 같이 {} 안에 errors.properties에서의 적용 이름?을 직접 넣으면 메시지가 제대로 출력됨 강의에서의 프로젝트와 다른 점이 버전 뿐인 것 같은데, 혹시 자바 혹은 스프링 부트의 버전에 따라 검증 애너테이션의 메시지가 적용되는 로직에 차이가 있나요? 그게 아니라면 어떤 이유로 이렇게 되는 건지 꼭 이유를 알고 싶습니다. 제가 작성한 부분 중 틀린 부분이나 추가해야 할 부분이 있다면 알려주세요..! 여러군데 검색을 해봤지만 원하는 답을 얻을 수 없어 질문 올립니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 사진처럼 JSP코드에서 자바코드가 인식이 안되네요...라이브러리 설치하라는데로 했는데 뭐가 문제인지알수있을까요? build.gralde 파일 plugins { id 'java' id 'war' id 'org.springframework.boot' version '3.2.1' 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' implementation 'jakarta.servlet:jakarta.servlet-api' //스프링부트 3.0 이상 implementation 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api' //스프링부트 3.0 이상 implementation 'org.glassfish.web:jakarta.servlet.jsp.jstl' //스프링부트 3.0 이상 //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' } tasks.named('test') { useJUnitPlatform() }
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 잘했는데 왜 안녕하세요 null. 이라고 뜨는지 모르겠습니다. ㅠㅠ 뭐가 문젠가요
<div>상품 종류</div> <div th:each="type : ${itemTypes}" class="form-check form-check-inline"> <input type="radio" th:field="*{itemType}" class="form-check-input"> <label th:for="${#ids.prev('itemType')}" th:text="${type.description}" class="form-check-label"> BOOK </label> </div> 여기서 thymeleaf 로 Model 객체 내 에 있는 itemTypes 인 enm 배열을 받아서 사용하는거잖아요? 그러면 정적 값들을 하나도 적어놓을 필요가 없는데 왜 BOOK만 적어놓은건가요?