안녕하세요. 현재 스프링 부트 2.7 버전을 사용하고 dependency-management 버전을 최신 버전으로 1.1.4를 사용해도 스프링 부트 버전에 맞는 라이브러리 버전을 가져오고 문제없이 동작하는 걸 확인했는데요. 또한 부트 2.7 버전 출시 전에 나온 1.0.5를 적용해봐도 라이브러리 버전은 동일하고 동작엔 문제가 없었습니다. io.spring.dependency-management 버전은 크게 중요하지 않는걸까요??
안녕하세요 강의 잘 보고 있습니다. 강의에서 언급해주신 내부 파일을 통한 설정 데이터 관리에 대해 궁금한 점이 있어 질문 드립니다. 강의에 있는 내용대로 소스코드와 설정데이터를 같이 관리한다고 하였을때 깃헙을 통해 버전관리를 하게 되면(public 레포지토리라 가정) 외부에 설정 정보가 노출되는 보안상 문제가 발생하게 되지 않을까요? 해당 이슈를 막기 위한 방법으로는 깃 이그노어에 설정파일을 추가하고 pull할 때 마다 설정파일을 공유를 하는 방법이 있을것 같습니다. 그러나 이는 설정 파일에 대한 버전을 관리하지 못하는 문제점이 발생하기에 바람직한 방법은 아니라 생각합니다. 이러한 상황에 대해서 버전관리 레포를 private으로 하는것 이외의 해결책은 존재하는지 궁금합니다.
안녕하세요. 강의를 듣던 중 의문이 생겨 질문드립니다. 만약 Controller의 특정 메소드에 @ResponseBody라는 애노테이션이 없다면 ReturnValueHandler가 http컨버터를 사용하지 않고 ModelAndView 객체를 만들어 dispacherServlet에 전달하고 view를 렌더하는 방식으로 진행한다고 이해해도 될까요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하십니까! 두번째 정주행을 통해서 다형성에 대해서 이해하고 문제풀이까지 완료했습니다. 처음 봤을땐 아무것도 손댈수 없었지만 다시 보니 막힌 혈이 뚫리는 기분이였습니다. 김영한 강사님께서 설명해주신 풀이로 푸는것은 이해했지만 다른 문제 풀이 방법을 보고 참고할까합니다! 직접 해보고 검색해보며 찾아보려했으나 나오지않아 질문 올립니다!
안녕하세요, 젬마님 강의 잘 듣고 있는 수강생입니다. 혹시 수업에서 다루지 않은 leetcode 문제도 질문 받아주실지 잘 모르겠지만 한 번 올려 봅니다...! Sales Analysis 3 문제의 답을 아래와 같이 적었는데 계속 오류가 납니다. 답변 주시면 감사하겠습니다. SELECT P.PRODUCT_ID, P.PRODUCT_NAME FROM PRODUCT P INNER JOIN ( SELECT * FROM SALES WHERE PRODUCT_ID NOT IN ( SELECT PRODUCT_ID FROM SALES WHERE SALE_DATE < '2019-01-01' OR SALE_DATE > '2019-03-31' ) ) N ON P.PRODUCT_ID = N.PRODUCT_ID;
ex1) useMyMoveToPage1.tsx import { useRouter } from "next/router"; export const useMyMoveToPage1 = (path: string) => () => { const router = useRouter(); // error void router.push(path); }; ex2) useMyMoveToPage2.tsx, 강의내용 import { useRouter } from "next/router"; interface IUseMyMoveToPage2Return { onClickMoveToPage: (path: string) => () => void } export const useMyMoveToPage2 = (): IUseMyMoveToPage2Return => { const router = useRouter(); const onClickMoveToPage = (path: string) => () => { void router.push(path); }; return { onClickMoveToPage }; }; ex3) /test/index.tsx import { useMyMoveToPage1 } from "../../src/components/commons/hooks/useMyMoveToPage1"; import { useMyMoveToPage2 } from "../../src/components/commons/hooks/useMyMoveToPage2"; export default function TestPage() { const { onClickMoveToPage } = useMyMoveToPage2(); return ( <> <button onClick={useMyMoveToPage1("/test/01")}> useMyMoveToPage: Move To Test01 Page </button> <button onClick={onClickMoveToPage("/test/01")}> useMyMoveToPage2: Move To Test01 Page </button> </> ); } [useMyMoveToPage1 error 내용] useMoveToPage 만들기를 실습하다가 더 짧게 리팩토링할 수 있을 것 같다는 생각에 맨위에 ex1 처럼 해봤는데 const router = useRouter() 부분에 문제가 있다고 하더라구요. 에러 내용을 번역해서 봐도 "잘못된 hook 호출이고 함수 컴포넌트 내부에서만 호출될 수 있다"라고 하는데 무슨 말인지도 사실 잘 모르겠습니다.. 강의내용처럼 useRouter를 밖에 두고 onClickMoveToPage라는 hof 함수를 따로 만들어 return 해줘야 문제가 없다는 것은 알겠지만 음... 이해가 되지 않아서 더 자세한 원리와 error가 나는 이유에 대해서 알려주시면 감사드리겠습니다. 잘 알려주시는 것에 비해 제 부족한 학습능력이 살짝 부끄럽네요 ㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. package array; import java.util.Scanner; public class ArrayEx10_1 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String[] productName = new String[10]; int[] productPrice = new int[10]; int productCount = 0; while (true) { System.out.println("1. 상품 등록 | 2. 상품 삭제 | 3. 상품 목록 | 4. 종료\n메뉴를 선택하세요." ); String options = scanner.nextLine(); if (options.equals("1") && productCount < 10) { System.out.print("상품 이름을 입력하세요: "); productName[productCount] =scanner.nextLine(); System.out.print("상품 가격을 입력하세요: "); productPrice[productCount] =scanner.nextInt(); productCount++; scanner.nextLine(); } else if (options.equals("1") && productCount == 10) { System.out.println("더 이상 상품을 동록할 수 없습니다."); } else if (options.equals("2") && productCount > 0) { for (int i = 0; i < productCount; i++) { System.out.println((i+1) + ". "+ productName[i] + ": " + productPrice[i] + "원"); } System.out.println("삭제할 품목의 번호를 입력해주세요."); int delNum = scanner.nextInt(); if ((delNum-1) < productCount) { productName[delNum-1] = null; productPrice[delNum-1] = 0; productCount--; System.out.println(delNum + "번 품목이 삭제되었습니다."); scanner.nextLine(); } else { System.out.println("올바른 품목의 번호를 입력해주세요."); scanner.nextLine(); } } else if (options.equals("2") && productCount == 0) { System.out.println("삭제할 품목이 없습니다."); } else if (options.equals("3") && productCount > 0) { for (int i = 0; i < productCount; i++) { System.out.println((i+1) + ". "+ productName[i] + ": " + productPrice[i] + "원"); } } else if (options.equals("3") && productCount == 0) { System.out.println("등록된 상풍이 없습니다."); } else if (options.equals("4")) { System.out.println("프로그램을 종료합니다."); break; } else { System.out.println("올바른 메뉴를 선택해주세요."); } } } } 실습을 하다가 삭제기능도 있었으면 해서 만들어 봤습니다.우선, 강의를 봤을 때와 조금 다르게 만든거 같구요. 메뉴를 선택할 때 글자를 넣으면 오류가 떠서 스트링형으로 바꿨습니다. 위 코드에서 가독성 측면이나 중복 등 피드백 가능하실까요...?또 추가로 강사님이었으면 어떻게 하셨을 것 같나요??
[질문 내용] 안녕하세요. 수업 항상 잘 듣고 있습니다. 다름이 아니라 강의 자료에 오타가 있는 거 같아서 글을 남깁니다. 오타의 내용은 강의자료 22pg 변수와 생명주기 -> 클래스 변수의 설명 세 번째 줄의 "생명주기가 어어진다" -> "생명주기가 이어진다." 로 오타가 수정되어야 할 것 같습니다. 감사합니다.
수강완료하였는데, 몽고db에 계속 관심이 많아서 더 깊게 배우고 싶은데, 아래 오픈하신 강사님 강의 추가로 수강하면 도움될까요? 영상뿐 아니라 몽고db관련 책도 볼만한거 있으면 추천받고 싶어요 https://www.inflearn.com/course/%EC%84%9C%EB%B2%84%EA%B0%9C%EB%B0%9C-%EB%B0%B1%EC%97%94%EB%93%9C-mysql-mongodb#curriculum
java17에서 scouter를 구동할수있는 방법이 있을까요? server는 강제적으로 java11로 실행시켰지만 인텔리제이 안에서 VM옵션을 넣어 에이전트와 함께 실행시키면 java.lang.IllegalArgumentException: Unsupported class file major version 61 에러가나네요 ㅜㅜ 서로 호환이 안맞나봅니다.. scouter는 무조건 java11환경에서만 구동해야하나요?
안녕하세요 영한님의 자바 기본편 강의를 듣다가 궁금한 점이 생겨서 아래와 같이 질문을 남겼습니다. 자바 메모리에서 메서드는 스택 영역에 스택 프레임으로 쌓여서 호출한다고 말씀해주셨습니다. 다음 설명에서는 결국 메서드 영역의 있는 메서드 코드를 호출한다고 말씀해주셨는데 그렇다면 스택 영역은 메서드 영역 안에 있는 것인가요??
[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
*UserController @GetMapping("/users/{id}") public EntityModel<User> retrieveUser(@Parameter(description = "사용자 ID", required = true, example = "1") @PathVariable int id) { User user = service.findOne(id); if (user == null) { throw new UserNotFoundException("id-" + id); } EntityModel entityModel = EntityModel.of(user); WebMvcLinkBuilder linkTo = linkTo(methodOn(this.getClass()).retrieveAllUsers()); entityModel.add(linkTo.withRel("all-users")); // http://127.0.0.1:8080/users try { return entityModel; } catch (Exception ex) { throw new RuntimeException(); } } @PostMapping("/users") public ResponseEntity<User> createUser(@Valid @RequestBody User user) { User savedUser = service.save(user); URI location = ServletUriComponentsBuilder.fromCurrentRequest() .path("/{id}") .buildAndExpand(savedUser.getId()) .toUri(); return ResponseEntity.created(location).build(); } 두 클래스가 비슷하게 느껴져서 질문드립니다. EntityModel 클래스는 Spring HATEOAS에서 지원하는 클래스로 위의 코드로 특정 사용자 정보를 조회하면서 동시에 관련 리소스로 쉽게 이동할수 있는 링크를 제공을 도와주는 클래스고 ResponseEntity클래스는 Spring MVC에서 지원하는 클래스로 HTTP 응답을 제어할 수 있도록 도와주며, 상태 코드, 헤더, 바디 등을 포함할수 있게 도와주는 클래스다. 라고 이해하면될까요 ?? 그렇기 때문에 Get에서는 해당 자원에 대한 추가적인 리소스를 제공하기 위해 EntityModel을 사용하고 Post에는 해당자원의 생성에 대한 201 상태코드를 제공하고 해당자원에 위치를 제공하기위해 ResponseEntity를 사용한것 인가요?? Post에도 반환 값으로 EntityModel을 사용을 하는 경우도 있을까요?? 찾아보니 ResponseEntity<EntityModel<User>> 이렇게 사용하게 되는 경우 상태 코드와 함께 EntityModel<User>를 응답 본문으로 반환이 가능하다고 하는데 그렇다면 함께 사용하는 것이 데이터의 표현과 응답의 정확성을 높여줄것으로 예상이 되는데 이렇게 사용도 자주하는지 궁금합니다!
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 강의내용과 동일하게 컨트롤+쉬프트+T 눌러서 JUnit4 선택하고 코드를 동일하게 쳤을때 이런 오류가 발생합니다 https://www.inflearn.com/questions/15495/%ED%85%8C%EC%8A%A4%ED%8A%B8-%EB%8F%84%EC%A4%91-%EC%97%90%EB%9F%AC-%EB%B0%9C%EC%83%9D 링크에서 설정에서 run test를 intelliJ IDEA로 바꾸면 아래와 같은 오류입니다 intellij IDEA로 변경 + 임포트를 jupiter.api.test 로 하면 이런 오류입니다 run test를 default + 임포트를 jupiter.api.test로 하면 이런 오류입니다.... 어떻게 해야 할까요? AI답변 받았는데 해결이 안되었습니다
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 1. 의존관계 주입 방법 @Configuration public class HelloConfig{ @Autowired private DataSource dataSource; @Bean public PlatformTransactionManager txManager(){ return new DataSourceTransactionManager(dataSource); } } 2. 의존관계 주입 방법 @Configuration public class HelloConfig{ @Bean public PlatformTransactionManager txManager(DataSource dataSource){ return new DataSourceTransactionManager(dataSource); } } 안녕하세요 의존관계 주입 연습 도중 궁금한 점이 생겨 올렸습니다 ! 보통 1번방법으로 스프링 부트에서 자동으로 등록해준 히카리 커넥션 풀 DataSource 구현체를 dataSource 변수에 의존관계 주입(@Autowired) 받았었습니다 그런데 2번 방법으로 시도해보니까 자동으로 dataSource 변수에 의존관계 주입이 되어서 DataSourceTransactionManager 객체가 정상적으로 빈으로 등록되는 것을 확인할 수 있었습니다. @Autowired가 있지도 않았는데 이것이 가능한 원리가 무엇인지 궁금합니다 !