묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
"회원 도메인과 리포지토리 만들기" 강의까지 듣고 궁금한 점이 있어 질문 남깁니다~
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. "회원 도메인과 리포지토리 만들기" 강의까지 듣고 궁금한 점이 있어 질문 남깁니다~ HelloController와 같은 컨트롤러 클래스나Repository 인터페이스의 구현체인 MemoryMemberRepository 클래스 전부 객체가 다 생성되고 동작한다고 보면 될까요?그렇게 생성된 객체들을 스프링 빈이 관리한다고 보면 될까요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
Selet All 쿼리에서 반복적으로 Clustered Index 탐색 하는지 궁금 합니다.
select * from article where board_id = 1 order by article_id desc limit 30 offset 1499970; 해당 SQL 문을 실행하면 선생님이 설명 해주신 것 처럼 먼저 Secondary Index 에서 offset 0 부터 탐색이 일어나는데요.Secondary Index 에서 offset 0 조회 한 다음 Clustered Index 에서 데이터를 찾는다고 해주셨습니다. 이러한 과정을 offset 1499999 까지 반복 과정이 발생 하는데왜 Secondary Index 에서 탐색 후 Clustered Index 에 데이터를 찾는 과정이 필요한지 궁금 합니다. 그러니깐 Secondary Index 에서만 일단 1499999 번 탐색한 다음에 Clustered Index 을 통해 그 외 데이터 (select *) 을 가져오면 되는것이 아닌가요? 제가 아직 인덱스에 대한 지식이 부족해 이런 질문을 한건데요ㅠ 다시 정리해서 질문 드리자면 왜 Secondary Index 을 통해 offset 순번 1499999 까지 도착 하지 않았는데 불필요하게 Clustered Index 까지 탐색하는가 입니다!
-
해결됨서버개발자 과제전형 완벽가이드 - 1편
멀티모듈 지식 습득에 관하여 질문 드립니다.
안녕하세요 강사님 새해 복 많이 받으세요!개인적으로 궁금한 점이 있어 질문을 드리게 되었습니다.멀티 모듈 및 멀티 모듈 셋팅에 관한 지식을 공식 문서를 보시고 영어를 해석 하거나 혹은 번역 기능을 활용하여 직접 테스트를 하시면서 습득하셨는지 아니면 도서나 타 강의로 습득을 하셨는지 질문 드리고 싶습니다! 간혹 다른 타 강의에서 질문을 드릴 때 공식 문서 링크를 주셔서 공식 문서를 보았는데 봐도 내용이 너무 방대하고 어떻게 해야 할지 잘 모르겠더라고요 그러면 그냥 실력이 부족한 것일까요? 아니면 제가 제대로 시간을 제대로 들이지 않고 탐독하지 않은 것일까요? 제가 해당 강의에서 개인적으로 느끼기에는 멀티 모듈 및 세팅 방법, 디테일 한 내용이(apply piugin 설정, bootJar.enabled=true, jar.enabled=true 같은) 일반적인 지식이 아닌 생소한 지식이라고 생각을 했습니다.(일반적인 지식이었다면 비전공자여서 그랬나 봅니다 ㅠㅠ...) 비전공자로서 개발 공부를 하면서 느끼는거지만 디테일한 내용이나 검색으로 잘 찾아지지 않는 지식들과 새로운 지식들은 어떻게 습득해야할지 방법을 잘 모르겠어서 계속 헤메는 느낌이 있어 질문 드립니다!
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
트랜잭션이 없는 상태에서 조회
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]5:30초 에서 order.getOrderItems().stream()하는 부분에서 orderItem에 있던 Item들에 값이 들어가는것으로 알고있는데, 이는 @Transactional 이 있는 Service계층이 아니라 Repository계층에서 불렀기 때문에 프록시 객체가 들어간것이 맞나요? @Transactional 어노테이션이 없는 계층에서 em.find()나 createQuery()같은 메소드를 호출해도 되는지와 왜 트랙잭션이 없을때 item에 대한 값을 얻을수있는지 궁금합니다.
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Controller가Repository에 의존해도 되나요?
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]Contoller에서 Service를 의존하는게 아니라 Repository에 의존해도 되나요?? 예제라서 단순화 한건지 아니면 다른 프로젝트에서도 동일하게 Controller에서 Repository로 접근해도 되는지 궁금합니다. 이전에 비슷한 질문을 본것같은데 답변을 못찾아서 질문 남깁니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
초기설정에서 궁금한점이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]빌드,실행,배포->Gradle에서 Gradle을 intelliJ IDEA로 바꾸었습니다. 근데 원래 Gradle에서는 중단 실행 버튼(HelloSpringApplication.java)만 누르면 코드를 바꾼대로 웹브라우저가 업데이트가 되었었는데, intelliJ로 바꾼후에는 코드를 바꿔주어도 out이 업데이트 되어야만 웹브라우저가 업데이트 되는것으로 확인되었습니다. 하지만 out폴더에 있는 파일은 중단 실행 버튼(HelloSpringApplication.java)만으로 업데이트가 안되고 프로젝트 다시빌드를 해주어야만 업데이트가 되는데 왜이런지 알고싶습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Run 버튼이 활성화되지 않습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.자주하는 질문 링크도 모두 확인해보고 혼자 서치도 해봤지만 해결이 안되어 남깁니다. 혹시 인텔리제이 커뮤니티버전인게 문제인가 싶어 학생 라이선스로 울트라버전까지 다운받아봤지만 해결이 안됩니다. 스프링 관련 어노테이션도 전혀 인식하지 못하는 것처럼 보입니다. 런 버튼은 당연히 활성화가 안되고요우선 자바 버전은 아래와 같습니다.openjdk version "21" 2023-09-19 LTSOpenJDK Runtime Environment Temurin-21+35 (build 21+35-LTS)OpenJDK 64-Bit Server VM Temurin-21+35 (build 21+35-LTS, mixed mode, sharing) 자주하는 질문이나 검색을 통해 보면, build tool 내의 gradle을 설정하라는 것처럼 보이는데, 저에게는 gradle 선택지가 아예 존재하지 않습니다. 아래 사진처럼요. ./gradlew bootRun 을 터미널에 직접 쳐서 정상적으로 실행시키고 있었으나 너무 불편합니다. 혹시 해결방법이 보이신다면 도움 부탁드립니다.
-
해결됨자바 스프링 부트 프로젝트와 파이썬 AI 프로젝트 연결하기
WebSocket connection 오류 질문 있습니다.
안녕하세요~강의 잘 들었고 도움이 많이 되었습니다. 한가지 오류가 해결되지 않아서 질문 남깁니다.아래 오류가 발생하는데 원인을 잘 모르겠네요.(윈도우 환경에서 1개 pc에 파이썬, 자바스프링부트, mqtt 모두 실행하고 있음)혹시나 해서 방화벽 설정도 해봤어요~ <오류사항>웹브라우저 localhost:8080/ai로 접속하면, 브라우저에 "MQTT Client Example" 텍스트만 나오고카메라 화면이 안 나옴개발자도구 콘솔에서 아래 오류가 발생함.WebSocket connection to 'ws://localhost:9001/' failed:Disconnected from broker <확인 사항>1. mosquitto.conf 설정 확인# Config file for mosquitto# MQTT 기본 리스너 설정listener 1883protocol mqtt# WebSocket 리스너 설정listener 9001protocol websocketsallow_anonymous true 2. 실행 순서1) mosquitto.exe 실행2) python camera.py 실행 ( 윈도우 화면에서 카메라 내용 정상적으로 나오고 object detect가 잘 됨)3) 스프링부트 프로젝트 실행후 웹브라우저 접속(http://localhost:8080/ai)
-
미해결코틀린으로 만드는 스프링부트
인텔리제이의 run 버튼이 활성화되지 않습니다.
계속 같은 문제가 발생하여 결국 터미널에 ./gradlew bootRun 을 입력하는 것으로 대체했는데, 왜 활성화되지 않는지 궁금합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
오류 도와주세요 ..제발 도와주세요 ㅠㅠ
어제까지 잘 됐는데 갑자기 오늘부터 서버실행시 오류가 나는데 찾아봐도 모르겠어서 남깁니다 .. 제발 도와주세요.다음 진도를 못 나가고 있습니다 ㅠㅠ
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
게시글 CRUD API 구현 10:39에서 에러 발생
현재 ArticleApplication.java를 실행하면 다음과 같은 에러가 발생하고 있습니다.동작에는 문제가 없어서 후에 나오는 ArticleApiTest를 작성하고 실행을 해보니, 비밀번호와 아이디가 일치하지 않는다는 에러가 나오고 있습니다.하지만 저는 docker exec -it kuke-board-mysql bashmysql -u root -proot(비밀번호)로 구성되어 있으며 application.yml 또한 아래 처럼 구성되어 있습니다.server: port: 9000 spring: application: name: kuke-board-article-service datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://locahost:3306/article username: root password: root jpa: database-platform: org.hibernate.dialect.MySQLDialect open-in-view: false show-sql: true hibernate: ddl-auto: none 그래서 gpt에게 물어본 결과 mysql plugin 문제일 수 있다고 해서 아래와 같이 변경까지 해봤습니다. 하지만 그럼에도 에러는 해결되지 않고 계속해서 이런 에러가 나와 질문드립니다.
-
해결됨실전 jOOQ! Type Safe SQL with Java
인텔리제이 테마 질문
혹시 테마 어떤거 쓰시나요...너무이뻐요..강의 정말 감사합니다 jooq 호기심이 많았었는데. 시간아낄수있게 도와주셔서 감사해요
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트 코드에서 @Transaction사용 시 delete 쿼리가 나가지 않습니다.
안녕하세요. 강의를 수강하며 따로 게시판을 만들어보는중에 문제가 발생하여 질문드립니다.다름이 아니라 테스트 코드 작성중에 em.delete()를 사용하는 부분에서 궁금증이 생겨 질문 남깁니다.아래는 테스트 코드가 작성 된 부분입니다.회원을 만들고 게시글을 작성하고 이 게시글을 삭제하도록 하였습니다.PostService의 deletePost, PostRepository의 delete를 사용하여 게시글의 id를 입력받아 삭제하는 구조로 작성하였습니다.여기서 테스트를 실행 시키면 테스트가 실패합니다. 기대값은 0인데 실제로 1이되어 있다고 나옵니다.로그를 통해 확인해보면 delete 쿼리가 작동하지 않았습니다. 하지만 테스트 클래스의 @SpringBootTest아래의 @Transactional을 삭제하고 실행 시키면delete 쿼리가 작동하고 테스트가 정상 동작합니다. @Transactional을 사용하면서 delete문이 제대로 작동하도록 할 수 있을까요?웹 서핑을 하며 테스트 해본 것입니다.1. em.flush()2. @Rollback(value=false)
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MVC와 템플릿 엔진 강의에서 질문이 있습니다~
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 해당 강의 내용중에@GetMapping("hello-mvc")public String helloMvc(@RequestParam("name") String name, Model model) { model.addAttribute("name", name); return "hello-template";} 이와같이 HelloController에 새로운 메서드를 추가하고 @RequestParam 어노테이션을 사용해서 요청 url에서 ?를 사용해서 파라미터를 받게 되는데요. 1)@RequestParam에 command+B를 이용해서 인텔리제이로 소스코드를 보면, RequestParam이 인터페이스로 되어있는데 그렇다면 구현체는 어디에 있다고 보면 될까요? 구현체를 확인할 수 있는 건가요? 2)HelloController에서 @RequestParam("name") 이렇게만 코드를 입력했을 때, RequestParam 인터페이스에서 String name() 값이 "name"이 되었다고 보면 되는 걸까요? 그렇다면 그걸 어떻게 알 수 있는 건가요? 왜냐면 RequestParam 인터페이스에는 모든 메서드가 default값을 가지고 있더라구요. 3)이렇게 @RequestParam을 사용한 파라미터가 "쿼리 파라미터"이고 ?을 사용한다고 생각하면 될까요? 이거말고 path 파라미터 이렇게 2가지라고 알고 있습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
소스코드 어디서 가지고 오나요?? 저는 안보던데
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]소스코드 메뉴얼??이라는곳에서 복사붙여넣기 하시는거같은데 저는 강의 옆부분에 구름모양도 없는데 방법이 있을까요??
-
미해결토비의 스프링 부트 - 이해와 원리
binding error
질문 전 말씀드리면, Kotlin + Spring Boot를 사용하고 있습니다. Datasource Connection Test 코드를 작성하고 테스트할 때 application.yml에서 properties 객체로의 binding시 이슈가 있습니다.정확하게는 prefix가 존재할 때 binding시 String에서 Properties 객체로 binding을 시도하다가 에러가 발생하고 있고, application.properties 해당 문제가 발생하지 않음과 달리 application.yml에서 prefix 존재하는 경우 발생하고 있습니다.혹시, 강의에서 진행해주셨던 postProcessAfterInitialization의 내부 로직에서 application.yml + prefix 조합에서의 별도 처리가 필요한걸까요?binding error를 확인하기 위해 작성한 테스트 코드는 아래와 같습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
org.springframework.boot:spring-boot-starter-aop 폴더가 없는 문제
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요? 환경 설정 중 org.springframework.boot:spring-boot-starter-aop 폴더가 없어아래 코드를 build.gradle에 추가했으나 수업에서 다뤄주셨던 의존관계처럼 업데이트되지 않고 있습니다.어떻게 해결해야 할까요?implementation 'org.springframework.boot:spring-boot-starter-aop' 강의 내용에서 나오는 이 부분과 같지 않습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradlew 빌드 시 환경변수 에러 해결
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]저 뿐만 아니라 많은 분들이 gradlew 빌드 시 환경 변수 관련 에러가 발생하여 삽질하다가 해결하여 공유드립니다.저의 경우 gitBash로 ./gradlew 명령어를 입력했을 때 환경 변수 설정 관련 에러가 발생했는데 아래와 같이 해결했습니다. 해결 과정환경 변수 설정에서 JAVA_HOME 변수의 값과 Path에 추가해야 하는 %JAVA_HOME%\bin 확인했으나 정상적으로 설정되어 있는 상태예전에 사용한 zulu jdk과 충돌이 의심되어 모두 제거 했으나 해결되지 않음InteliJ - File - Project Structure - Platform Settings - SDKs 목록에서 직접 설치한 Oracle JDK만 남기고 zulu jdk 등 제거 후 적용했으나 해결되지 않음InteliJ - File - Settings - Build, Execution, Deployment - Build Tools - Gradle에서 Gradle JVM을 직접 설치한 Java 버전으로 설정했으나 해결되지 않음gitBash를 열고 홈 디렉토리에서 .bashrc에 접근하여 환경 변수를 아래와 같이 수정 및 적용하여 문제 해결export JAVA_HOME="/c/Program Files/Java/jdk-17" export PATH="$JAVA_HOME/bin:$PATH" 결론내 OS(Windows)의 시스템 환경 변수에서는 JAVA_HOME과 PATH 환경 변수를 정상적으로 설정했으나 gitBash는 Windows의 시스템 환경 변수와는 별개로 자체적인 환경 변수를 관리하기 때문에 gitBash 내부에서 JAVA_HOME과 PATH 환경 변수를 별도로 설정해줘야 했음 저와 같은 문제로 헤매시는 분이 계시다면 도움이 됐으면 좋겠습니다. 혹시나 잘못된 내용이 있다면 댓글로 알려주시면 감사하겠습니다!
-
미해결스프링 시큐리티 OAuth2
jwt decoder 토큰 검증 시 질문
마지막 강의에서 이불러 인가서버 access token을 1초만에 만료 시키는 설정을 하고 리소스 서버로 expire 엔드 포인트를 호출 하였는데 여기서 bearer 인증 필터를 거치는데 여기서 jwt 토큰을 decoder로 검증할 때 토큰이 만료되어 검증이 실패하지 않나요? 강의에서는 바로 컨트롤러 엔드 포인트까지 도달 하고 클라이언트까지 응답이 갔습니다.
-
해결됨스프링 시큐리티 OAuth2
클라이언트에서 userinfo 엔드포인트 호출 시 질문
안녕하세요강의 초반에 oauth2Login api를 사용하여클라이언트에서 token 요청 후 scope email, profile 이렇게 userinfo 엔드포인트 요청 시인가 서버에서 해당 요청을 받아서 리소스 서버에게 토큰 검증을 맡기고 검증을 성공하게 되면 리소스 서버에 저장된 사용자 정보를 바로 클라이언트에게 전송하나요? 아니면 다시 인가서버로 전송하나요?만약 scope에 openid가 포함이 안되어 있다면 인가 서버에서토큰 검증을 수행 후 사용자 정보를 안주는 거 같은데 우리가 보통 사용하는 google, 카카오 네이버 이런 거는 포함 안 시켜도 줬는데.. 또 강의 초반에는 키클록을 사용했는데 이건 키클록 구현과는 좀 틀린가요?