묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결나도! 스프링으로 인공지능을 할 수 있다(인프1탄)
강의 코드 변경 요청
선생님 강의 잘 듣고 있습니다. 강의를 보면서 예제 코드를 작성하고 있는데 선생님께서 영상을 찍어주셨을 때의 코드와 현재 버전의 코드가 차이가 많이 있는거 같습니다. 첫 강의 자료 중에 코드가 바뀐 부분만 현재 버전의 코드로 수정하여 올려주시면 감사하겠습니다 ㅠㅠ
-
미해결나도! 스프링으로 인공지능을 할 수 있다(인프1탄)
getContent(), getText() 질문
public String chatMessage(String message) { return chatClient.prompt() .user(message) .call() .chatResponse() .getResult() .getOutput() .getText(); } 선생님 현재 스프링 ai 1.0.1버전을 사용중입니다. 그러면 getText()가 아닌 getContent()를 사용해서 프롬프트를 생성해야되는거 아닌가요?! 왜 getConetent()를 사용할 수 없는걸까요?!
-
해결됨장애를 허용하는 견고한 시스템 만들기
@Transactional선언 메서드 정상동작하는건가요?
보상 트랜잭션 예제 소스에 createOrderAndStockDecreaseEvent 메서드에 Transactional선언되어 있고 주석에 하나의 트랜잭션으로 묶는다고 명시하신거 보면 트랜잭션되게 하시려고 한거 같은데요근데 자기호출로 프록시 안타서 트랜잭션으로 안묶이는데 혹시 예제라서 그냥 해놓으신건가요?
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
ApiControllerAdvice에서 2개 이상의 Exception 타입 핸들링
안녕하세요.ApiControllerAdvice에서 하나의 Handler 메서드에서 아래 2개 Exeception 타입을 처리하시도록 변경하셨는데요.- DuplicateEmailException- DuplicateProfileException 이렇게 할 경우, 아래와 같이 두 Exception의 공통 타입인 RuntimeException 객체로 파라미터를 받아야 하는거 아닐까요?@ExceptionHandler({DuplicateEmailException.class, DuplicateProfileException.class}) public ProblemDetail duplicateExceptionHandler(RuntimeException e) { return getProblemDetail(HttpStatus.CONFLICT, e); } 감사합니다.
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
Member와 MemberDetail의 연관관계 주인이 바뀐게 아닌가 싶습니다.
안녕하세요.Member와 MemberDetail의 연관관계 주인이 바뀐게 아닌가 싶습니다.비록 1:1 관계이고, 두 객체 인스턴스가 동시에 생성되고 테이블에 영속화 되게끔 설정된 거는 맞지만,논리적으로 Member 엔터티가 상위 엔터티이고, MemberDetail이 하위 엔터티가 맞는 것 같아요.추후 Member 엔터티를 참조하는 다른 엔터티가 만들어질텐데,MemberDetail을 참조하는게 아니라 Member를 참조해야 하고요.관련한 의견 부탁 드립니다.감사합니다.
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
DuplicateEmailException에 @ResponseStatus(HttpStatus.CONFLICT) 애너테이션 사용
안녕하세요.도메인 영역에 @Entity, @Query 애너테이션을 사용하는게 문제가 없다는 내용과 이유를 강의에서도, 질문&답변에서도 잘 설명해 주셨고, 모두 확인했습니다. 동일한 이유로,강의에서 DuplicateEmailException에 @ResponseStatus 애너테이션 사용 시, 의존성 문제에 대해서 언급한 부분도, JPA 애너테이션을 사용할 수 있다는 동일한 근거로 허용되어도 문제가 없는게 아닐까요?물론, @ResponseStatus 사용 시에 상태 코드 외에 추가적인 메시지 설정이 불가능하다는 등 단점이 있어서 사용하지는 않겠지만요. 그저 기술 의존성 침투 관점에서 궁금해서 문의 드립니다.감사합니다.
-
해결됨장애를 허용하는 견고한 시스템 만들기
영상 편집이 잘못된 것 같아요. (순서가 중간에 계속 바뀜)
섹션 4 - 23. 백엔드 개발자가 알아야할 카프카 주요 설정6분대부터 쭉 보고있는데 편집 순서가 일부 뒤집힌게 있는 것 같습니다.
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
전략적 침투: Spring Boot Application 실행에대해서
./gradlew bootRun --args='--spring.batch.job.name=systemTerminationSimulationJob'위에 코드로 터미널에서 실행하는데 System.out.println로 출력해둔 건 나오지않고 스프링부트 로그만 뜨고 끝나버리더군요 AI에게 물어봤더니 그럴경우 강제적으로 하는방법이 있다고해서 ApplicationRunner를 주입시켜서 해봤는데 또 잘나옵니다. ApplicationRunner를 계속 둘수도 없는거라 ApplicationRunner없이 안나오는경우에는 어떠한 설정문제일까요? 일단 AI가 해보라는데로 다해봤지만 실패했습니다.
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
각파일들의 디렉토리 위치가 없는데 임의적으로 해야하나요?
각파일들의 디렉토리 위치가 없는데 임의적으로 해야하나요?예를들어 BatchConfig파일을 어디에 생성해야하는지 안보이는거 같아요
-
해결됨프로덕션 레벨 실시간 채팅 서버 구축: 분산 처리부터 성능 최적화까지 (Kotlin & Spring)
그레이스풀 셧다운과 데몬 스레드의 관계 질문
안녕하세요 강사님 좋은 강의 잘 듣고 있습니다강의에서 말씀하신 그레이스풀 셧다운과 데몬스레드의 관계까 제가 이해한 의미와 조금 달라서 여쭤봅니다.저는 그레이스풀 셧다운을 진행 중인 작업을 마무리하고 안전하게 종료하는 것으로 이해하고 있는데 데몬 스레드는 JVM 종료 시 작업이 중간에 끊길 수도 있다고 알고 있습니다. 그래서 “레디스 이벤트 처리 과정이 백그라운드에서 알아서 들어가기 때문에 데몬 스레드를 사용하면 자연스럽게 그레이스풀 셧다운이 된다”라는 설명에서 레디스의 백그라운드 이벤트 처리 방식과 데몬 스레드 사용이 어떤 식으로 연결되는지를 조금 더 구체적으로 알고 싶습니다. 또, 메시지를 소비하는 도중에 애플리케이션이 종료된다면 메시지 손실 가능성은 없는지도 궁금합니다. 그리고 실무 환경에서도 보통 이런 방식(데몬 스레드 기반)으로 Redis Pub/Sub 리스너를 구성하는지 아니면 다른 종료 처리 방식을 더 선호하는지도 알고 싶습니다.좋은 강의 잘 듣고있습니다! 감사합니다.
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
21강 생성자에서 의존성 주입과 관련하여 질문 있습니다.
생성자에서 필드에 의존성 주입하면예를 들어 컨트롤러 생성자를 만들때 서비스 필드에 의존성 주입해주면 그때는 @Autowired가 자동으로 존재한다고 했는데 이 @Autowired 는 생성자의 파라미터를 전부 빈으로 등록시켜주는건가요?만약 그렇다고 한다면 생성자의 파라미터가 객체가 아닌 경우는 어떻게 되는건가요?혹시 객체 타입 파라미터만 빈으로 등록시켜주고 객체가 아닌 파라미터는 빈으로 등록시켜주지 않나요?
-
해결됨카카오 면접관이 알려주며 가장 쉽게 배우는 Kafka
일부 영상들에 스크립트가 누락되었어요 ㅠㅠ
강사님 안녕하세요!스크립트가 2분부터 약 10분간 누락되었네요 ㅠ이번 영상 말고도 다른 영상들에도 누락된게 있는 것 같아요.개인적으로 영상을 2번 시청하는데 두번째는 스크립트로 보면서 하는 편이라 인프런 측에 요청 부탁드려도 될까요?
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
20강 강의 내용중 Interface 만드는 부분에서 질문이 있어요
Interface 만드는 중에 메서드 정의할때 public은 추상 메서드라면 지우셨는데 추상 메서드는 public을 왜 지워야 하나요? 아니면 안 지워도 되는데 어떤 이유로 인해 지운건가요?
-
미해결실전! 스프링 데이터 JPA
순수 JPA 리포지토리 코드 수정부분
[질문 내용]메소드 이름으로 쿼리 생성 챕터의 첫 예제 코드에서JPA로 직접 작성한 findByUsernameAnd... 메서드 내부createQuery 부분에서 Member.class 를 파라미터로 같이 전달해야 할 것 같아서 글 작성합니다
-
미해결Spring Boot TDD - 입문부터 실전까지 정확하게
"오해: 단위 테스트와 통합 테스트를 잘 분리해야한다." 에 대한 질문
안녕하세요. 강의를 듣다 아래와 같은 내용에 대해 개인적인 생각이 있고, 이 생각에 대해 강사님의 생각이 궁금하여 질문 글 올립니다. "오해: 단위 테스트와 통합 테스트를 잘 분리해야한다." 저 또한, 단위 테스트와 통합 테스트를 분명하게 구분하기에는 모호한 부분이 있다고 생각합니다. 하지만, 저는 이를 분리해서 테스트를 진행하고자 합니다.명확한 합의는 없으나, 팀 내 혹은 저에게 있어 단위 테스트와 통합 테스트를 아래와 같이 구분하고자 했습니다.단위 테스트 : 외부의 영향이 존재 하지 않고 가장 작은 단위로써 해당 부분 내에서만 테스트를 진행.통합 테스트 : 외부의 영향까지 반영하여 테스트. 스프링부트 테스트, JPA 테스트 등 이렇게 분리해서 테스트를 진행하고자 하는 이유는 다음과 같습니다.테스트에 대한 빠른 피드백테스트 할 때 빠른 피드백과 빠른 수정이 필수라고 생각합니다. 단위 테스트의 경우 외부 영향 없이, mock을 통해 빠르게 내가 목록화한 테스트를 진행하며, CI 환경에서도 빠르게 피드백을 받을 수 있습니다.반면, 통합 테스트의 경우 비교적 시간 소비가 많이 됩니다. 스프링부트 테스트의 경우 비교적 적은 시간이 소비되지만, JPA 테스트와 같이 디비에 대한 테스트 혹은 다른 플랫폼( 예 : 키클락 등)을 진행하기 위해서는 테스트 컨테이너와 같은 도구를 활용할 수 있다고 생각합니다. 이러한 도구를 사용함에 있어서 많은 시간이 소비가 될 가능성이 크다고 생각합니다.특히 저희 회사의 경우 테스트 환경이 많이 좋지 않아 시간이 훨씬 더 많이 걸리게 됩니다.그래서 저는 단위 테스트랑 통합 테스트를 분리하여 개발 환경에서는 단위 테스트를, 운영 CI 환경에서는 단위 + 통합을 함께하여 테스트를 진행하고 있습니다. 이렇게 분리해서 진행하는 것은 나름 장점이 보이고 있다고 생각하는데 이 부분에 대해 강사님의 의견과 잘못된 부분이 있다면 피드백 부탁드립니다.
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
소셜 로그인 질문 있습니다
social 유저는 기존 회원보다 위험한 유저이므로 회원 정보 수정 페이지로 이동시켜야 한다 라고 하셨는데 이유가 뭔가요??
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
카프카 이외의 메시지 큐 사용
완강하고 갑자기 생각난 질문입니다만, 이번 강의에서 카프카 아닌 rabbitmq 와 같은 다른 메시지 큐를 사용한다면 어떨까요? 어차피 거의 사용용도가 같다면 크게 달라지는 부분은 없을지 고견 부탁드립니다.
-
해결됨실전 jOOQ! Type Safe SQL with Java
generate dao 를 통한 삽입 시 pk auto-increment 가 적용되지 않습니다
Kotlin, Groovy gradle, PostrgreSQL 기반으로 프로젝트 세팅이 되어 있습니다 @Repository class ActorRepository( private val dsl: DSLContext, configuration: Configuration ) { private val actorDao = ActorDao(configuration) companion object { private val ACTOR = JActor.ACTOR } fun save(actor: Actor): Unit = actorDao.insert(actor) }이러한 방식으로 Repository 가 구현되어 있을 때, @SpringBootTest class ActorRepositoryTest( private val actorRepository: ActorRepository, ): StringSpec({ "insert test" { val actor = Actor().apply { firstName = "John" lastName = "Doe" } println("Actor before insert: $actor") val insertedActor = actorRepository.save(actor) } }) { override fun extensions() = listOf(SpringExtension) } 위 쿼리가 실행됩니다제가 예상했던 insert into "actor" ("first_name", "last_name") values(?, ?) 과는 다르게 id 값이 0으로 고정되어 생성되더라구요generate dao 를 생성하는 방법이 잘못된 걸까요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
페이징 조건시 조회수 정렬 기능 질문
강사님 안녕하세요.게시판 조회시 페이징으로 처리할때 조회수를 오름차순, 내림차순 정렬하는 기능이 있다면 현재 강의 설계 기준으로 어떻게 구현할 수 있을까요? 제가 생각한 방법은 다음과 같습니다.사전 조건:view에서 조회수 데이터는 redis를 바라봄개수 백업 적용 / 단위는 10페이징 쿼리에서 RDB 백업 테이블의 조회수 기준으로 정렬코드 레벨에서 redis 데이터 기준으로 한번 더 정렬 문제는, 2번에서 한 페이지의 데이터만 정렬이 되기 대문에 페이지를 넘어갈때 정렬이 깨지는 현상이 발생합니다 ㅠ 데이터 전체를 메모리에 한번에 조회하지 않고 할 수 있는 방법이 있을까요?
-
미해결스프링부트를 활용한 RESTFUL API 만들기(AWS,EKS)
저는 맥북인데 이건 그냥 윈도우용으로만 수업하시네요
저는 맥북인데 이건 그냥 윈도우용으로만 수업하시네요 이거 지금 처음 1화? 듣고 있는데 슬슬 걱정되네요 돈낭비 아닌가 하고 맥북이라서 뭘 어떻게 해야 하는지 잘 모르겠는데요 -_-