묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
세션1이 롤백을 하게 되면 세션2는 잘못된 데이터를 수정하는 문제가 발생한다는 의미
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] 아래는 강의 자료에 있는 내용입니다.------------------------------------------세션1이 트랜잭션을 시작하고 데이터를 수정하는 동안 아직 커밋을 수행하지 않았는데, 세션2에서 동시에 같은 데이터 를 수정하게 되면 여러가지 문제가 발생한다. 바로 트랜잭션의 원자성이 깨지는 것이다. 여기에 더해서 세션1이 중간에 롤백을 하게 되면 세션2는 잘못된 데이터를 수정하는 문제가 발생한다.------------------------------------------ money=10000인 상태에서 세션1이 money를 5000으로 바꾼다고 하더라도 커밋을 하지 않는다면, 세션2가 보고 있는 money는 여전히 10000인 거고 10000에 접근하는 거 맞나요? 그렇다면 세션1이 롤백을 하더라도 세션2은 기존 10000을 수정하고 있는 거니 잘못된 데이터를 수정하는 건 아니지 않나요? 위에 굵게 표시한 부분 어떤 의미인지 궁금합니다. 아니면 위에 있는 설명은 커밋되지 않는 데이터에 접근하는 경우라고 가정하는 건가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
th:classappend 시 No Operation VS 빈값
[질문 내용]필드 오류 처리 개선 방안에서 _ 이라는 No-Operation 명령어를 사용해서 처리했는데, 그냥 ‘’ 이렇게 빈 값을 넣어도 처리가 됩니다. No Operation 사용과 빈값 사용에 어떤 차이가 있을까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
빌더 패턴 vs 정적 팩토리 메서드
빌더 패턴을 사용하여 객체를 생성하는 방법과 정적 팩토리 메서드를 사용하여 객체를 생성하는 방법을 각각 언제 사용하면 좋을지 궁금합니다.구글링해서 찾아보니 빌더 패턴은 파라미터가 많을때 사용하고 정적 팩토리 메서드는 파라미터가 적을때 사용한다고 하는데 파라미터가 많고 적음의 기준도 잘 모르겠고 명확하게 언제 사용하면 좋을지에 대한 글을 찾지 못해 질문글을 작성합니다.
-
미해결스프링 핵심 원리 - 기본편
@RequiredArgsConstructor도 @Autowired 기반인가요?
@RequiredArgsConstructor를 통한 의존관계 자동 주입이 결국 @Autowired를 사용한 것인가요
-
해결됨토비의 스프링 6 - 이해와 원리
변하지 않는 코드 분리하기 - 메소드 추출
안녕하세요 토비님변하지 않는 코드 분리 commit 에서 WebApiExRateProvider가 private "static" 인 이유가 있나요?강의에서는 extract method 단축키로 만드셨는데 왜 intellij가 static을 붙이는것을 추천해줬는지 도 좀 궁금합니다...
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
ItemRepository 인터페이스 생성 이유??
1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]ItemRepository 인터페이스 생성한 이유가 궁금해서 질문드립니다.강의에서 해당 인터페이스를 생성하는 이유가 영한님이 알려주신 강의에서는 jdbctemplate, mybatis, jpa등등 데이터 접근 기술들을 알려주셔서 해당 구현체들을 추상화 목적으로 만드신건가요?? 아니면 현업에서는 일반적으로 영한님처럼 파일 구조로 만드나요??
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 빌드 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.자바 버전 17이상을 사용하는데 빌드가 안됩니다.
-
미해결스프링 핵심 원리 - 고급편
실무에서 어떻게 모니터링을 하는지 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]항상 훌륭한 강의 잘 보고 있습니다.다름이 아니라, 강사님께서 "모니터링 툴을 도입하면 많은 부분이 해결되지만, 해결하지 못하는 부분도 있다"라고 말씀하셨습니다.그러면 실무에서는 모니터링 툴 + 스프링을 활용하는건가요?아니면 모니터링 툴만 사용하는건가요? 실무에서 스프링을 활용한 로그 추적이 어떻게 사용되는지 궁금합니다!
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Postman 500에러
선생님처럼 무한 루프로 안가고 500에러가 뜨는데 왜 그런건가요??
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
게시물 필터 기능 구현
타임리프와 스프링으로 게시판을 만들어보고 있는데 한 가지 질문을 좀 드리게 되었습니다.필터와 인터셉터 관련 부분을 수강 후 게시판 혐오글 작성 방지 기능을 구현해보고자 하는데요.인터셉터가 요청을 가로채 인터셉터의 prehandle에서 혐오글 포함 시 인터셉터가 호출이 되면서 컨트롤러가 호출되지 않도록 하는 부분까진 이해가 됐습니다만 현재 SSR 방식의 타임리프를 사용하고 있어 게시물 생성 부분은 @RestController 어노테이션을 사용해 자바스크립트의 fetch() 함수로 API를 호출하고 있습니다. 그러면 아무리 인터셉터에서 컨트롤러를 호출시키지 않는다고 하더라도 등록된 이벤트에 의해 API를 호출하면 게시글이 생성이 될 수 밖에 없는 상황인데 이 상황에선 어떻게 해결을 해야 되는지 조언을 듣고 싶습니다
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
인텔리제이 자동정렬 문제
강의 7분 21초쯤 save.jsp 내용을 따라서 작성하는데<ul> <li>id=<%=member.getId()%> </li> <li>username=<%=member.getUsername()%> </li> <li>age=<%=member.getAge()%> </li> </ul>계속 이런식으로 닫는 태그가 자동으로 밑으로 가버리더라구요. 구글링 해봐도 잘 못 찾겠어서 질문드립니다 ㅠ 다시 위로 올려놔도 다른 작업할 때 다시 저렇게 변해버리네요 강의처럼 뒤에 딱 붙게 해서 보고싶은데 혹시 설정 방법이 따로 있을까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
45강 배포후
jar명령어까지 하여 스프링부트를 실행해주었는데 다음과 같은 오류가 뜨고 웹에서도 서버 내부 오류라고 뜹니다. 무엇이 잘못된건지 모르겠네요.https://www.inflearn.com/community/questions/1199055/45%EA%B0%95-dev-%EC%97%B0%EA%B2%B0-%EC%97%90%EB%9F%AC 이거 참고해도 이해가 안가요
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트 코드에서 @Transactional과 @AfterEach
강의에서 @Transactional 을 테스트코드에 붙여서 테스트를 진행하였는데요 @AfterEach 어노테이션으로 void clean() {메서드를 만들어 리파지토리를 정리하는거랑 차이가 있나요?코드가 간결해지는 이점으로 @Transactional 를 자주 사용하게 되는건가요?실무에서 어떻게 쓰이는지 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
Map 동작 매커니즘
Map을 만들어주고 키로 string을 받아줬을 뿐인데 키 자리에 뭐가 들어가는지는 어떻게 결정되나요? 각 discount policy의 이름을 키로 넣어라라는 주문을 한적이 없는데 어떻게 들어간건지 궁금합니다!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
인터셉터를 활용한 로그인 인증
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.addPathPatterns을 사용하여 모든 경로에 인터셉터를 추가하고 excludePathPatterns에 제외하고 싶은 경로를 작성하여 제거하여 인터셉터를 특정 URL에만 적용할 수 있다는 점을 배웠습니다. 제가 궁금한 점은 여기서 만약에 서버에서 지원하지 않은 URL 즉, 404 에러를 발생시키는 URL에 접근할 경우에도 로그인 페이지가 나오고 로그인을 완료하면 그 후에 404 페이지가 나옵니다. 이렇게 컨트롤러가 지원하지 않은 URL에는 인터셉터를 적용시키 않으려면 어떻게 설정을 해야하는건가요?
-
미해결견고한 결제 시스템 구축
payment 상태 업데이트 변경 메서드를 3개나 두는 이유가 궁금합니다.
강의 30분 40초에 보시면 success, failure, unknown 이렇게 상태를 변경하면서 메서드를 3개나 두시는데 이유가 궁금합니다. 만약 jpa나 querydsl을 사용한다면 코드가 달라질까요?
-
미해결실전! 스프링 데이터 JPA
save에 관한 질문입니다.
[질문 내용]강사님이 save를 할때는, 데이터가 디비에서 한번 갔다온(디비에서 조회된) 친구들은 수정시 save호출시 merge가 일어난다고 하셨는데, 영속성 컨텍스트에 그 조회한 데이터가 있으면, merge가 안 일어나지 않나욤?? 디비에서 데이터를 가져왔을 때, 해당 데이터의 변경이 일어나면, 그냥 트랜잭션이 끝날때, flush()가 일어나니까, 놔두면 알아서 더티체킹이 일어나서 업데이트가 되는 것으로 알고있습니다.그래서, 한번 테스트로 데이터를 변경시키고, 해당 데이터를 save하니 디비에서 한번 더 select가 안 날라가더라고요. 이랬을땐, 아무것도 안 일어나는 건가여? 그리고 트랜잭션이 끝날때 더티체킹이 일어나서 업데이트가 되는 건가여? 영한님이 말하신 건, 영속성 컨텍스트에 해당 데이터를 clear했을 때를 말하는 건가여? 아래 사진 첨부입니다.@Test public void test(){ Member member = memberRepository.findById(2L).orElseThrow(); member.setUsername("ㅎㅎ"); memberRepository.save(member); } @Test public void test(){ Member member = memberRepository.findById(2L).orElseThrow(); member.setUsername("gg"); em.flush(); em.clear(); memberRepository.save(member); }
-
미해결스프링 핵심 원리 - 기본편
CoreApplicationTests 오류 질문드립니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 에러 내용현재 CoreApplicationTests를 돌리면 오류가 나서 질문 올려봅니다.잘은 모르지만 고치려고 제 코드와 오류를 살펴보니 MemberServiceImpl과, OrderServiceImpl 둘의 클래스 각각 @Autowired 어노테이션이 적용된 생성자에 주입해지는 MemberRepository 타입 객체가? 빈에 등록된게 두개라 둘 중 뭘 넣지 못한다는 형식의 오류 같습니다. (확실하지 않아서 모르겠어서 질문 드립니다). 시도한 부분자주묻는 질문란에 스프링 부트 3.X 매개변수 이름 인식 문제에 대해서 인식하고 @Autowired 관련 문제 해결방안 3인 인텔리제이의 설정 부분에서 Build and run using를 Gradle로 설정하고 돌려도 똑같더라구요.그래서 아직까지 문제가 정확히 무엇인지 파악하지 못하겠습니다.하단에 에러 메세지와 코드 덧붙였습니다. 한번 봐주신다면 정말 감사하겠습니다. ㅠ 코드압축본https://drive.google.com/file/d/1WdsaN07LSBwaHzlae8WMEj-0wwYnOM5c/view?usp=sharing 에러메세지 (게시글 용량때문에 중요해 보이는 에러만 가지고 와봤습니다) 테스트 실행했을 때 Test Results - CoreApplicationTest - contextLoads의 에러 내용입니다Failed to load ApplicationContext for [MergedContextConfiguration@36681447 testClass = hello.core.CoreApplicationTests, locations = [], classes = [hello.core.CoreApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@192d74fb, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@66ce957f, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@efde75f, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@7894f09b, org.springframework.boot.test.context.SpringBootTestAnnotation@fd6d726d], contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null]java.lang.IllegalStateException: Failed to load ApplicationContext for [MergedContextConfiguration@36681447 testClass = hello.core.CoreApplicationTests, locations = [], classes = [hello.core.CoreApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@192d74fb, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@66ce957f, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@efde75f, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@7894f09b, org.springframework.boot.test.context.SpringBootTestAnnotation@fd6d726d], contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null] Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,MemberRepository Error creating bean with name 'memberServiceImpl' defined in file [/Users/sun/workspace/intelliJ/spring/study/core/build/classes/java/main/hello/core/member/MemberServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,MemberRepositoryorg.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberServiceImpl' defined in file [/Users/sun/workspace/intelliJ/spring/study/core/build/classes/java/main/hello/core/member/MemberServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,MemberRepository Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,MemberRepository
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Whitelabel Error Page로 넘어가는 문제
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]화면상에 오류메시지가 뜨지 않고 Whitelabel Error Page로 넘어가는데 잘못된 부분을 찾을 수가 없어서 질문드립니다.이전 강의에서는 제대로 되었다가 안되었다가 했었는데 이제는 아예 Whitelabel로 넘어가버리네요 다음은 코드입니다.https://drive.google.com/file/d/1hLNHWRMH4_SYUxFWYiLkUdg7O6EEWKuy/view?usp=sharing
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
@RequestBody에 관해서 질문이요.
선생님, 스프1탄 MVC02의 35강을 보고나서 질문드려요.boardUpdate() Ajax에서 클라이언트가 적은 값을 변수 title, content에 초기화 하고, 그 값이 자바스크립트니까 JSON.stringfy로 JSON으로 변경해주고, 컨트롤러에서 @RequestBody로 그 JSON 값을 자바로 변환해서 비즈니스 로직을 해주고 있다.맞나요?근데 insertBoard() 에서도 클라이언트가 적은 값을 fData에 자바스크립트 문자열로 직렬화 해줬는데,어떻게 변환과정없이 비즈니스 로직이 실행되나요?