public String chatMessage(String message) { return chatClient.prompt() .user(message) .call() .chatResponse() .getResult() .getOutput() .getText(); } 선생님 현재 스프링 ai 1.0.1버전을 사용중입니다. 그러면 getText()가 아닌 getContent()를 사용해서 프롬프트를 생성해야되는거 아닌가요?! 왜 getConetent()를 사용할 수 없는걸까요?!
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 가르쳐 주지 안으셔서 질문을 드립니다. 자바 스크립트 코드에서 <script> 나머지 내용 생략.... //객체 var user = [[${user}]]; </script> 객체 코드 오류를 없애는 법을 나중에 설명해준다고 하였는데요.(5:27-5:38) 2번을 들어봤지만. 나오는 이야기가 없어서 요청을 합니다. 가르쳐 주시면 감사하겠습니다. 이렇게 요청을 한 이유는 영한님이 가르쳐 준다고 하였고, 자바 스크립트에서 이렇게 하신 이유가 있다고 생각해서 배워야 겠다는 생각이 들어서요.
안녕하세요. ApiControllerAdvice에서 하나의 Handler 메서드에서 아래 2개 Exeception 타입을 처리하시도록 변경하셨는데요. - DuplicateEmailException - DuplicateProfileException 이렇게 할 경우, 아래와 같이 두 Exception의 공통 타입인 RuntimeException 객체로 파라미터를 받아야 하는거 아닐까요? @ExceptionHandler({DuplicateEmailException.class, DuplicateProfileException.class}) public ProblemDetail duplicateExceptionHandler(RuntimeException e) { return getProblemDetail(HttpStatus.CONFLICT, e); } 감사합니다.
안녕하세요. Member와 MemberDetail의 연관관계 주인이 바뀐게 아닌가 싶습니다. 비록 1:1 관계이고, 두 객체 인스턴스가 동시에 생성되고 테이블에 영속화 되게끔 설정된 거는 맞지만, 논리적으로 Member 엔터티가 상위 엔터티이고, MemberDetail이 하위 엔터티가 맞는 것 같아요. 추후 Member 엔터티를 참조하는 다른 엔터티가 만들어질텐데, MemberDetail을 참조하는게 아니라 Member를 참조해야 하고요. 관련한 의견 부탁 드립니다. 감사합니다.
안녕하세요. 도메인 영역에 @Entity, @Query 애너테이션을 사용하는게 문제가 없다는 내용과 이유를 강의에서도, 질문&답변에서도 잘 설명해 주셨고, 모두 확인했습니다. 동일한 이유로, 강의에서 DuplicateEmailException에 @ResponseStatus 애너테이션 사용 시, 의존성 문제에 대해서 언급한 부분도, JPA 애너테이션을 사용할 수 있다는 동일한 근거로 허용되어도 문제가 없는게 아닐까요? 물론, @ResponseStatus 사용 시에 상태 코드 외에 추가적인 메시지 설정이 불가능하다는 등 단점이 있어서 사용하지는 않겠지만요. 그저 기술 의존성 침투 관점에서 궁금해서 문의 드립니다. 감사합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요. 영한님 강의를 듣고 한 가지 궁금한 점이 있습니다. 강의에서 "보다 디테일한 예외가 잡힌다"고 설명해주셨는데, 혹시 @Order(0) 설정을 하지 않으면 GlobalExceptionHandler 에서만 예외가 처리가 잡히는데요, 즉, 예외 처리 클래스를 여러 개로 분리했다면 @Order 를 지정하지 않으면 세부 예외 처리 핸들러가 아닌 글로벌 핸들러로만 잡히는 이유가 클래스 분리 때문인지 궁금합니다. @RestControllerAdvice @Order(0) public class BoardExceptionHandler { /** * 게시판을 찾을 수 없을 때 발생하는 예외 처리 */ @ExceptionHandler(BoardNotFoundException.class) public ResponseEntity<ErrorResponse> handleBoardNotFound(BoardNotFoundException ex) { ErrorResponse response = ErrorResponse.builder() .code("BOARD_NOT_FOUND") .message(ex.getMessage()) .status(HttpStatus.NOT_FOUND.value()) .timestamp(LocalDateTime.now()) .details(Collections.singletonList("게시판 ID를 확인해주세요.")) .build(); return ResponseEntity.status(HttpStatus.NOT_FOUND).body(response); } /** * 게시판 수정 / 삭제 권한이 없을 때 발생하는 예외 처리 */ @ExceptionHandler(BoardPermissionDeniedException.class) public ResponseEntity<ErrorResponse> handleBoardPermissionDenied(BoardPermissionDeniedException ex) { ErrorResponse response = ErrorResponse.builder() .code("BOARD_PERMISSION_DENIED") .message(ex.getMessage()) .status(HttpStatus.FORBIDDEN.value()) .timestamp(LocalDateTime.now()) .details(Collections.singletonList("해당 게시글에 대한 권한을 확인해주세요.")) .build(); return ResponseEntity.status(HttpStatus.FORBIDDEN).body(response); } } @RestControllerAdvice public class GlobalExceptionHandler { /** * 글로벌 예외 처리 */ @ExceptionHandler(Exception.class) public ResponseEntity<ErrorResponse> handleGenericException(Exception ex) { ErrorResponse response = ErrorResponse.builder() .code("INTERNAL_SERVER_ERROR") .message("서버에서 오류가 발생했습니다.") .status(HttpStatus.INTERNAL_SERVER_ERROR.value()) .timestamp(LocalDateTime.now()) .details(Collections.singletonList(ex.getClass().getName())) .build(); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(response); } }
직장을 다니면서 틈틈히 1일 10분이라도 강의 듣고 코딩 연습을 할려고 노력하다 보니 완강이 되었습니다. 고급편과 스프링 입문도 같이 하면서 백엔드 개발도 할 수 있는 시간을 기대합니다. 자료구조는 좀 재미(?)가 없었지만 나중에 필요한 내용이므로 잊어버리지 않고 기억하도록 하겠습니다. 좋은 강의 감사합니다.
안녕하세요! 지금까지 수업을 윈도우 노트북으로 듣고 있었습니다. 그런데 노트북에 문제가 생겨 새로운 노트북으로 구매 후 파일을 옮기려고 하는데 이번에 구매한 노트북 운영체제 맥os입니다. 간편하게 옮기고 빠르게 실행 할 수 있는 방법이 있을까요?? 일단 node, npm, yarn까지 다운 받은 상태 입니다.
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. th:block이라는 태그를 통해 하는 것을 보았습니다. 근데 들으면서 이렇게 하면 th:block 없어도 될 것 같다는 생각이 들어서, 코드를 고쳐서 해보았습니다. 이렇게 코드를 넣어봤고, 결과는 사진과 같이 똑같이 나왔습니다.(하나 추가 한게 무슨 이유인지 모르겠지만, 사용자 나이 밑에 br태그없이 span을 쓰면 붙여서 나와서 br태그를 씀) 그래서 솔직히 th:block 태그 보다는 div에 th를 넣고 아래에 방법 처 할것 같은데. th:block의 다른 예가 없는지 궁금합니다. 답변 부탁 드립니다.
현재 2주 free같은데 claude3.5 3.7 4 등등 모든 버전에서 코드짜는게 안되고 Anthropic's latest models are currently only available to paid users. Please upgrade to a paid plan to use these models. (Request ID: aec9ae0d-5eb4-4514-a54e-478383ef2f0a) 라고 뜹니다. Free users can only use GPT 4.1 or Auto as premium models (Request ID: 849c6230-8e63-4751-9b03-9def2bab9e86) 라고 뜰 때도 있고요
강좌에서 언급한대로 직접 세팅하기보다는 그냥 settings/ts 폴더 클론받아서 하시는 것을 추천드립니다. 직접 세팅하기에는 버전이 자꾸 달라져서 세팅법이 바뀌고, 입문자분들한테는 버겁습니다. 폴더가 많아서 헷갈리니 back 폴더는 백엔드 용으로 남겨두시고, setting/ts 폴더를 front 폴더로 바꾼 뒤 나머지 폴더는 전부 지워버리세요. 라는 말씀에 따라 다음과 같이 세팅을 했는데, alecture 폴더로 들어가 npm init 을 하라고 하시는 부분이 이해가 어렵습니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 1. resources/templates/error/4xx.html 만 존재할 때 localhost:8080/error-404 -> 4xx.html 응답 localhost:8080/error-400 -> 4xx.html 응답 resources/templates/error/4xx.html, resources/templates/error/404.html 이 모두 존재할 때 localhost:8080/error-404 -> 404.html 응답 localhost:8080/error-400 -> 404.html 응답 -> 여기서 4xx.html이 응답해야하는거 아닌가요? 파일 경로에는 문제가 없는데 페이지 소스를 봐도 404.html이 맞습니다.
function create(baseURL, options) { const instance = axios.create( Object.assign({ // baseURL: baseURL, baseURL, // key 와 값이 같으면 생략 가능 }), options, ); return instance; } 제가 사용한 코드입니다.(강의 내용 그대로 담았습니다. 주석 빼고 보면 강의 시 사용한 코드와 동일합니다. 제가 궁금한 것은, 인터넷으로 관련 문법을 찾아 본 결과 Object.assign(A,B,C)같은 형식으로 하여, A,B,C 각각의 객체를 merge한다고 알고 있는데, 강의에서는 Object.assign({baseURL}),options 으로 options객체를 object.assign 함수 바깥에 위치하더라구요? 이러면 아무 의미 없는 코드가 되어 버리는것 아닌가요? Object.assign({baseURL,},options)를 해야 되는거 같은데, 제가 놓친 부분이 있는걸까요? (코딩이 전공이 아니라 제가 잘 모르는 걸수도 있습니다. 알려주시면 감사하겠습니다)
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
생성자에서 필드에 의존성 주입하면 예를 들어 컨트롤러 생성자를 만들때 서비스 필드에 의존성 주입해주면 그때는 @Autowired가 자동으로 존재한다고 했는데 이 @Autowired 는 생성자의 파라미터를 전부 빈으로 등록시켜주는건가요? 만약 그렇다고 한다면 생성자의 파라미터가 객체가 아닌 경우는 어떻게 되는건가요? 혹시 객체 타입 파라미터만 빈으로 등록시켜주고 객체가 아닌 파라미터는 빈으로 등록시켜주지 않나요?
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/ 아니오 ) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 궁금증이 생겨서 질문을 드립니다. 반복 강의에서 each.html 을 복사하고 붙여놓기를 하였는데요. <table border="1"> 이 부분에서 border부분이 흰색 취소선 칠해져 있다는것 을 발견하였습니다. 그래도 뭐 일단 돌려보기는 하였는데 잘나오는데. 뭔가 찜찜해서.. 그 보더에 마우스를 대보니 사진 처럼 이런 글이 나와서 구글에 이 나오는 글을 복사하고 해보았더니 이렇게 사진처럼(80%로 측소) 나왔는데 사진에 나오는 글처럼 <table style="border: 2px solid black;"> 이렇게 바꾸는게 나을까요? 아니면 그냥 계속 <table border="1"> 이런 방식으로 써야 할까요? w3schools도 살펴 봤지만 전체 적용 하는 것들만 있어서 모르겠네요. 답변 부탁 드립니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니오 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] [SpringBoot 3.x] ```java plugins { id 'java' id 'org.springframework.boot' version '3.5.4' id 'io.spring.dependency-management' version '1.1.7' } group = 'study' version = '0.0.1-SNAPSHOT' java { toolchain { languageVersion = JavaLanguageVersion.of(21) } } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' runtimeOnly 'com.h2database:h2' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' //Querydsl 추가 implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" } tasks.named('test') { useJUnitPlatform() } clean { delete file('src/main/generated') } ``` 강의파일에 있는 그대로 build.gradle 설정 완료후 compileJava를 진행하면 build/generated/sources/annotationProcessor/java/main/study/querydsl/entity/QHello.java 까지 생성이 됩니다. 하지만, build and run using : intellij Run tests using : intellij 로 변경하면 Q타입 인식이 안됩니다. 1. 버전 변경 진행 2. Annotation Processor enable 체크 확인 3. projectStructure -> modules -> build 부분 source 체크 진행 3가지 모든 과정을 진행해보았는데 동일했습니다. 이럴때는 Run as intellij 가 아닌 Gradle로 두어서 진행해야 할까요?