묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Category, Item 연관관계
이전 강의를 통해 연관관계의 주인이 아닌 클래스에 mappedBy 속성을 사용한다고 이해하였습니다. Category 에 @JoinTable 을 사용하고, Item 에 mappedBy 속성을 사용하셨는데 왜 Item 에 mappedBy 를 사용하신 것인지 궁금해서 질문 남깁니다. 감사합니다.
-
해결됨스프링 부트 - 핵심 원리와 활용
라이브러리 자동구성 ConditionalOnProperties관련 질문입니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하십니까관련 ConditionalOnProperties관련 설정을 하다 궁금한점이 있어 여쭙고자 적습니다.자동구성을 만들기 위해 memory 프로젝트에 ConditionalOnProperties에 특정 name을 셋팅하고 해당 name에 대한 환경정보를 project-v2 application.yml에 입력했을때는 해당 값을 읽지 못하는 것 같습니다.JVM 옵션으로 주는 방법이 아닌 application.yml의 값을 읽기 위해서는 별도의 설정이 필요한가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 cmd 창에서 gradlew.bat 빌드 success 이후 lib 디렉토리가 생성 안되요
C:\Users\hong_\Desktop\hello-spring1>gradlew.bat> Task :helpWelcome to Gradle 8.5.To run a build, run gradlew <task> ...To see a list of available tasks, run gradlew tasksTo see more detail about a task, run gradlew help --task <task>To see a list of command-line options, run gradlew --helpFor more detail on using Gradle, see https://docs.gradle.org/8.5/userguide/command_line_interface.htmlFor troubleshooting, visit https://help.gradle.orgBUILD SUCCESSFUL in 760ms1 actionable task: 1 executedC:\Users\hong_\Desktop\hello-spring1> cd build C:\Users\hong_\Desktop\hello-spring1\build 디렉터리2024-02-13 오전 10:57 <DIR> .2024-02-13 오전 10:57 <DIR> ..2024-02-13 오전 10:57 <DIR> classes2024-02-13 오전 10:57 <DIR> generated2024-02-13 오전 10:57 <DIR> resources2024-02-13 오전 10:57 <DIR> tmp 0개 파일 0 바이트 6개 디렉터리 366,841,688,064 바이트 남음
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
thymeleaf.org html 영상의 코드와 pdf 2장의 View 코드와 다르네요..
PDF 파일에는 View라는 코드는 아래 코드 밖에 없습니다<html xmlns:th="http://www.thymeleaf.org"><body><p th:text="'hello ' + ${name}">hello! empty</p></body></html> 혹시 10줄 인 영상이랑 같은 코드좀 공유해 주실 수 있으신가요?
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
34강 orphanRemoval 관련 질문입니다!
orphanRemoval 을 걸지 않았을 경우책6을 삭제했으나, userLoanHistories를조회해보면 여전히 책6이 존재한다.orphanRemoval = true 을 걸었을 경우클린 코드를 삭제했더니조회시 사라졌다어째서 orphanRemoval을 걸어주지 않으면데이터베이스에 반영이 되지 않는건가요? @Transactional어노테이션으로 인해 트랜잭션이 시작될 때,영속성 컨텍스트가 시작되고,영속성 컨텍스트의 4대 특징 중 하나인생성/수정 감지로 인해user 객체의 userLoanHistories 의 값에변경사항(removeOneHistory)이 발생하여자동저장이 될거라고 생각했는데 말이죠.. 실제 데이터베이스상에선 userLoanHistories 는user테이블의 필드가 아니기 때문에,영속성 컨텍스트가 관리하는 field 에 포함이 되지않는데orphanRemoval = true 를 걸어주면비로소 자신이 관리하는 field로 인식하는걸까요?원리가 너무 궁금해요.. 내용추가1)바로 다음 강의인 책 대출 리팩토링에선orphanRemoval 같은 옵션을 주지 않고도new userLoanHistory를 add한 내용대로 저장이 되는데,어째서 userLoanHistory를 remove하는것은orphanRemoval 옵션이 없으면데이터의 변경이 일어나지않는지 궁금합니다.. 제 생각에는 User에서 userLoanHistories.add를 하든 userLoanHistories.remove 를 하든둘 다 User와 UserLoanHistory 와의 연관관계를 이용한데이터를 변경하기위한 접근같은데 ..add는 되는데 remove는 안되는게 살짝 이해하기 어렵습니다 ㅠ 내용추가2)returnBook과 loanBook , removeOneHistory의 차이점이 뭘까 고민해봤는데returnBook 과 loanBook 은UserLoanHistory라는 Entity에 접근하는 과정(loanBook은 Entity객체생성, returnBook은 Entity의 property 수정)이 존재하고, removeOneHistory는 Entity에 직접 접근하는게 아니라 단순히 List에 대한 변경일뿐이고, Entity에 대한 직접적인수정이나 생성이 이뤄진것이 아니므로 데이터베이스의 변경이 일어나지 않았다.이렇게 이해했는데 제가 이해한 내용이 맞을까요?생각을 정리하다보니 질문이 길어진 점 죄송합니다 ㅠ
-
해결됨스프링 부트 - 핵심 원리와 활용
java -Dspring.profiles.active=dev -jar .\external-0.0.1-SNAPSHOT.jar 오류가 발생합니다
[질문 내용]java -Dspring.profiles.active=dev -jar .\external-0.0.1-SNAPSHOT.jar -D 옵션을 빼고 실행하면 잘 작동하는데, -D를 붙이면 오류가 납니다. Error: Could not find or load main class .profiles.active=devCaused by: java.lang.ClassNotFoundException: /profiles/active=dev 현재 환경 변수는 아래와 같이 설정해두었습니다.JAVA_HOME = C:\Program Files\Java\jdk-17CLASSPATH = %JAVA_HOME%\lib CLASSPATH를 아래와 같이 바꾸는 방법도 해봤는데 안되네요. CLASSPATH = %JAVA_HOME%\lib;. Build - Gradle 설정은 아래와 같습니다. https://www.inflearn.com/questions/819583/could-not-find-or-load-main-class-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0 여기에 나와있는 해결책 2개는 모두 적용해봤습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
H2 2.2.224버전 MVCC
저는 현재 스프링 부트 최신 버전 3.2.2 를 쓰고H2는 2.2.224 버전을 사용하고 있습니다.테스트를 할 때 실패가 떠서 확인해보니org.h2.jdbc.JdbcSQLNonTransientConnectionException: Unsupported connection setting "MVCC" [90113-224] 위와 같은 오류가 생겼습니다.H2 데이터베이스의 MVCC 옵션은 1.4.200 버전부터 deprecated 되었고, 이후 버전에서는 완전히 제거되었다고 합니다.url: jdbc:h2:tcp://localhost/~/jpashop저와 같은 오류가 생기시는 분이 있으시다면 이렇게 MVCC 부분을 제거하고 실행하시면 테스트가 잘 돌아갑니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
이미 존재하는 회원이라고 오류가 뜹니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.전 강의에서 통합테스트할 때는 잘 돌아갔는데 jdbc 템플릿으로 코드를 수정하니 이런 오류가 뜹니다. 코드에는 빨간불이 안 떠요. 문제가 뭘까요?껐다 다시 키고 실행하니 이렇게 뜹니다. integrationtest클래스랑 회원가입, 중복회원예외에 다 빨강느낌표 표시가 뜨고 저런 오류가 떠요.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
CascadeType.ALL 질문
엄청난 질문은 아니짐만 궁금한점이 있어 질문드립니다. CascadeType.ALL을 사용하면 자동으로 연관된 엔티티나 자식 엔티티들의 영속성을 관리해주는것으로 이해했는데 그렇게되면 fetch = EAGER을 사용할때와같은 데이터베이스 과부하 문제가 발생하지는 않는지 질문드립니다.실무에선 CascadeType.ALL을 잘 사용하는지 경우를 나누어서 사용한다면, 언제는 부적절하고 언제는 사용하는 것이 적절한지 궁금합니다. 사용하지 않는다면 대안은 무엇인지 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
application.yml을 꼭 main/resources/application.yml 경로에 넣자
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]application.yml파일을 main/resources/application.yml에 넣었다고 생각했는데 폴더 바깥에 두어서 한동안 뭔지도 모르고 헤맸습니다.. 혹시 저와 똑같이 헤매시는 분이 있을까 해서 글 남깁니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
버전 3.2.2 테스트 오류 - 해결은 했지만 궁금한 점
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] id 'java' id 'org.springframework.boot' version '3.2.2' id 'io.spring.dependency-management' version '1.1.4'java { sourceCompatibility = '17'}현재 쓰는 버전입니다.애플리케이션 실행에는 문제가 없지만 테스트시에 아래와 같이 오류가 뜹니다.Execution failed for task ':test'.> There were failing tests. See the report at: file:///C:/Workspace/jpa_%EA%B0%95%EC%9D%98/jpashop/build/reports/tests/test/index.html* Try:> Run with --scan to get full insights.Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.For more on this, please refer to https://docs.gradle.org/8.5/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.BUILD FAILED in 1s4 actionable tasks: 1 executed, 3 up-to-date이에 대한 해결 방법을 찾아 보던 중파일 - 설정 - 빌드,실행,배포 - gradle - 다음을 사용하여 테스트 실행 - IntelliJ IDEA 로 변경을 하여 해결하였습니다.해결은 했지만 왜 이와같은 오류가 일어났었는지 IntelliJ IDEA 로 테스트를 실행하도록 했을 때 왜 동작하는지 앞으로 다른 문제가 발생하지는 않을지 궁금합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
내장 톰캣에 대해 궁금한게 있습니다.
스프링부트에부터는 내장 톰캣을 사용하는거엔 익숙해져 있는데,과거에는 RedHat JBoss와 같은 외장 WAS들을 사용했다고 하던데 이로 인해 발생하는 단점 같은 것은 없을까요? 예를 들어 기술 지원을 더이상 받지 못한다던가.. 외장 WAS들이 가지고 있는 장점이 사라진다거나 성능의 차이같은 것은 없는지 궁금합니다. 검색을 해보았을 땐 내장 톰캣이 아파치 톰캣 개발자들도 내장 톰캣의 사용에 문제가 없다라고 했다던지, 성능 차이가 크지 않다는 자료들은 찾았는데 아직 여전히 스프링부트를 사용하지 않는 회사들이 많다고 알고 있습니다. 강의 내용처럼 이렇게 편리하다면 스프링부트의 버전업은 몰라도 스프링'만' 쓰는 회사들이 시스템을 스프링부트로 업그레이드 하지 않을 이유는 없을 것 같아서요! 친절한 강의 감사드립니다. 태현님!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
localhost:8080/hello 에러 발생
안녕하세요. localhost:8080/hello 을 실행하면 whitelabelerror 500이 발생 합니다. 경로도 영어로 바꿨고, 코드도 확인했고, 실행 중인지도 확인 했는데 안 됩니다.해결 방법이 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MemoryMemberRepositoryTest 실행시 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]package msj9965.project1.repository; import msj9965.project1.domain.Member; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import java.util.List; import static org.assertj.core.api.Assertions.*; class MemoryMemberRepositoryTest { MemoryMemberRepository repository = new MemoryMemberRepository(); @AfterEach public void afterEach(){ repository.clearStore(); } @Test public void save(){ //given Member member = new Member(); member.setName("spring"); //when repository.save(member); //then Member result = repository.findById(member.getId()).get(); assertThat(result).isEqualTo(member); } @Test public void findByName(){ //given Member member1 = new Member(); member1.setName("spring1"); repository.save(member1); Member member2 = new Member(); member2.setName("spring2"); repository.save(member2); //when Member result = repository.findByName("spring1").get(); //then assertThat(result).isEqualTo(member1); } @Test public void findAll(){ //given Member member1 = new Member(); member1.setName("Spring1"); repository.save(member1); Member member2 = new Member(); member2.setName("Spring2"); repository.save(member2); //when List<Member> result = repository.findAll(); //then assertThat(result.size()).isEqualTo(2); } } 위와 같이 MemoryMemberRepositoryTest을 작성했는데 테스트 코드 실행 시 아래와 같은 오류가 뜹니다.Execution failed for task ':test'.> Process 'Gradle Test Executor 14' finished with non-zero exit value 1* Try:> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights.> Get more help at https://help.gradle.org.Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.For more on this, please refer to https://docs.gradle.org/8.5/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.BUILD FAILED in 1s4 actionable tasks: 2 executed, 2 up-to-date
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
테스트를 실행해도 db에 반영이 안되는 것 같습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.처음에 db delete 안 해주고 실행했을 때도 체크 표시가 떴고 delete 해주고 실행, db에서 회원 목록 조회하니 목록에 아무도 없습니다. test가 db에 연결이 안된 걸까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
itemId 파라미터
주문하고 제출하면 이렇게 뜨는데 itemId 파라미터가 제대로 연결이 안된거인가요?? 코드 똑같이 작성했는데 뭘 제대로 다시 봐야하는지 잘 모르겠어요...
-
미해결백엔드 개발자 성능 개선 초석 다지기
LRU 알고리즘 질문
memoryStoreEvictionPolicy 에 가장 최근에 액세스된 항목을 먼저 제거하는 LRU 알고리즘을 사용했습니다. 라고 자료에 나와있는데, 제가 알기로 LRU 알고리즘은 가장 오랫동안 사용되지 않은 데이터를 삭제하는 것으로 알고 있습니다. 자료에서 설명하신 의미가 잘 이해가 되지 않아서 질문 드립니다.
-
미해결스프링 시큐리티 OAuth2
ExceptionTranslationFilter에서 this.authenticationEntryPoint.commence(request, response, reason)에 중단점이 걸리지 않습니다ㅠ
안녕하세요.거의 동일한 환경에서 실습 진행 중입니다.스프링부트 2.7.2 버전입니다.리소스 서버 인증 방식으로 해서 루트 경로 접근 시 401 error가 뜨려면 기본 엔트리포인트 객체인 BearerTokenAuthenticationEntryPoint의 commence 함수가 호출되어야 할 텐데요..그 로직을 안 탑니다. 그런데 401 error은 정상적으로 떠요.ExceptionTranslationFilter의 sendStartAuthentication 함수 안에도 중단점을 걸어보고 BearerTokenAuthenticationEntryPoint의 commence 함수에도 중단점을 모두 걸어봤는데도 안 되네요. 미스테리입니다. yml 파일만 작성했으므로 코드 상의 실수도 없을 텐데 말이죠ㅠ+다른 엔트리 포인트에도 전부 중단점을 걸어보았는데 어디에도 걸리지 않네요브랜치 링크입니다!
-
미해결백엔드 개발자 성능 개선 초석 다지기
모니터링 관련 질문
스카우터를 사용하면 트랜잭션 마다, 소요시간을 볼 수 있고, 로그도 확인이 가능한 것이 굉장히 매력적으로 느껴졌는데요실무에서도 많이 사용하는 툴 인가요? AWS 환경에서도 한 번 적용을 해보고 싶은데, AWS와도 같이 사용하는 편인가요?그리고 서버가 여러 대 있는, 스케일 아웃 환경에서는 어떤 식으로 사용되나요? 인스턴스마다 스카우터를 설치를 하고, 모니터링을 하는건가요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
수정이라는 작업을 할 때 PUT을 더 사용하는 이유가 있을까요?
HTTP 메서드에 처음 공부할 때 수정의 경우에는 PUT과 PATCH를 사용한다고 배웠는데요. PUT의 경우에는 통째로 갈아끼우는 방식의 갱신이고PATCH의 경우에는 부분 수정이 가능하다고 배웠습니다.이 강의에서는 USER의 정보중에 이름만받고 있어서(PUT은 전체 필드를 명시해주어야 한다고 배웠습니다.) PATCH가 더 적당한 방식이 아닌가라는 생각이 들었습니다. PATCH가 아닌 PUTMapping을 사용하신 이유가 있으실까요? 그리고 이와 관련된 블로그 글들이 많은데 저마다 내리는 결론이 달라서 조금 혼란스럽습니다. 강사님의 생각을 듣고 싶습니다.좋은 강의 만들어주신 태현님을 존중하고 존경하며 이만 글 줄이겠습니다!