묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
혹시 수업 자료가 제공되나요?
지금 강의 수강중인데 express 소스 코드는 확인했는데 그 외 수업자료는 제공이 안될까요? 공부한 내용을 화면 캡쳐해서 정리하고 있거든요.
-
미해결WPF (C#, 자막제공)
UserControl 관련
안녕하세요, Usercontrol 뷰와 뷰모델 파일을 만들어서 해당 유저컨트롤 뷰에 이벤트 컨트롤 (버튼 기능)을 Command를 통해 구현하고자 했는데 되지 않았습니다. 아마 코드 비하인드 단에 강의에서 MainViewModel과 MainView를 연동하는 법처럼 DataContext = 해당 뷰모델을 할당해주지 않아서 그런것 같은데. 해당 UserControl 뷰 비하인드에 UserContriolViewModel을 할당해주면 에러가 뜨더군요.(닫기/최소화/최대화 버튼 기능을 가진 유저컨트롤은 메인 뷰에 불러와서 사용할 예정입니다.)다른 뷰와 뷰모델을 만들시 이를 어떻게 동작시킬수 있는건지요? - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
코드 리팩토링 이렇게 해도 되나요??
수업 내용 코드는function checkPhone(myphone) { if (myphone.length < 10 || myphone.length > 11) { console.log("에러 발생!!! 핸드폰 번호를 제대로 입력해 주세요!!!"); return false; } else { return true; } } function getToken() { let result = String(Math.floor(Math.random() * 100000)).padStart(6, "0"); console.log(result); return result; } function sendTokenToSMS(myphone, result) { console.log(myphone + "번호로 인증번호" + result + "를 전송합니다."); } function createTokenOfPhone(myphone) { const isValid = checkPhone(myphone); if (isValid === false) return; const mytoken = getToken(); sendTokenToSMS(myphone, mytoken); } createTokenOfPhone("01012345678"); // 01012345678: 인자(argument) 이렇게 되어있는데createTokenOfPhone 함수에서 isValid 상수를 꼭 선언해야하나요?? function checkPhone(myphone) { if (myphone.length < 10 || myphone.length > 11) { console.log("에러 발생!!! 핸드폰 번호를 제대로 입력해 주세요!!!"); return true; } } function getToken() { let result = String(Math.floor(Math.random() * 100000)).padStart(6, "0"); console.log(result); return result; } function sendTokenToSMS(myphone, result) { console.log(myphone + "번호로 인증번호" + result + "를 전송합니다."); } function createTokenOfPhone(myphone) { if (checkPhone(myphone)) return; const mytoken = getToken(); sendTokenToSMS(myphone, mytoken); } createTokenOfPhone("01012345678"); // 01012345678: 인자(argument) 이렇게 checkPhone()이 문제있을 때만 true를 반환하고,checkPhone()이 true일 경우 return 처리하면 코드가 더 짧아지기는 하는데수업에서 말씀하시는 협업의 가독성을 위해서 isValid라는 상수를 선언해줘야 하는지 아니면 제가 생각한 방식으로 코드를 줄여도 괜찮은건지 궁금합니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
Entity에 toJSON 코드 입력 후 404 에러
Entity.ts에 추가한 toJSON() { return instanceToPlain(this); }이 코드가 들어가면 404에러가 뜹니다. 저 코드를 빼면 돌아가긴 합니다만 이미지(아바타)가 안보이고요.. 그리고 이런 에러가 나서 구글링 한 후 config를 이렇게 바꿨는데, 이게 문제인가.. 싶기도 하고요.. 너무 궁금한데 제발 꼭 좀 아시는 분 답변 부탁드려요
-
해결됨배달앱 클론코딩 [with React Native]
`UpdatePropsManager` is not available on non-native platform. 오류입니다.
환경 운영체제 : win 10 react-native : 0.72.7node : 20.5.0안녕하세요현재 위 처럼 BottomSheetModal이 열려져 있는 상태에서 위치를 검색하세요 라는 view를 클릭할경우 아래 제출한 코드의 <Modal> 컴포넌트가 나오게 되있습니다. 하지만 아래의 오류를 현재 내고 있어 질문드리게 되었습니다.. bottom-sheet 라이브러리로 @gorhom/bottom-sheet - npm (npmjs.com) 위 링크를 사용하였습니다. 에러 로그 내용의 전체부분은 다음과 같습니다. debuggerWorker.js:69 Error: [Reanimated] UpdatePropsManager is not available on non-native platform. at Handler (http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:123798:38) at BottomSheetDraggableViewComponent (http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:156784:33) at RCTView at http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:59381:44 at AnimatedComponent (http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:128894:38) at RCTView at http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:59381:44 at AnimatedComponent (http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:128894:38) at RCTView at http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:59381:44 at BottomSheetContainerComponent (http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:160869:32) at BottomSheetGestureHandlersProvider (http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:160962:38) at BottomSheet (http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:159277:74) at PortalHostComponent (http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:162079:21) at PortalProviderComponent (http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:162134:34) at BottomSheetModalProviderWrapper (http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:162297:25) at RNGestureHandlerRootView at GestureHandlerRootView at Map (http://10.0.2.2:8081/src\pages\map.bundle//&platform=android&app=com.nomans…d&modulesOnly=true&dev=true&minify=false&runModule=true&shallow=true:30:42) at StaticContainer (http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:170212:18) at EnsureSingleNavigator (http://localhost:8081/index.bundle//&platform=android&dev=true&minify=false&app=com.nomansland&modulesOnly=false&runModule=true:166073:25) at SceneView (익명)@debuggerWorker.js:69-TypeError: $$REQUIRE(...) is not a functionThis error is located at: in PanGestureHandler (created by BottomSheetDraggableViewComponent) in BottomSheetDraggableViewComponent (created by BottomSheet) in RCTView (created by View) in View (created by AnimatedComponent(View)) in AnimatedComponent(View) in Unknown (created by BottomSheet) in RCTView (created by View) in View (created by AnimatedComponent(View)) in AnimatedComponent(View) in Unknown (created by BottomSheet) in RCTView (created by View) in View (created by BottomSheetContainerComponent) in BottomSheetContainerComponent (created by BottomSheet) in BottomSheetGestureHandlersProvider (created by BottomSheet) in BottomSheet (created by BottomSheet) in PortalHostComponent (created by PortalProviderComponent) in PortalProviderComponent (created by BottomSheetModalProviderWrapper) in BottomSheetModalProviderWrapper (created by Map) in RNGestureHandlerRootView (created by GestureHandlerRootView) in GestureHandlerRootView (created by Map) in Map (created by SceneView) in StaticContainer in EnsureSingleNavigator (created by SceneView) in SceneView (created by BottomTabView) in RCTView (created by View) in View (created by Screen) in RCTView (created by View) in View (created by Background) in Background (created by Screen) in Screen (created by BottomTabView) in RNSScreen in Unknown (created by InnerScreen) in Suspender (created by Freeze) in Suspense (created by Freeze) in Freeze (created by DelayedFreeze) in DelayedFreeze (created by InnerScreen) in InnerScreen (created by Screen) in Screen (created by MaybeScreen) in MaybeScreen (created by BottomTabView) in RNSScreenContainer (created by ScreenContainer) in ScreenContainer (created by MaybeScreenContainer) in MaybeScreenContainer (created by BottomTabView) in RNCSafeAreaProvider (created by SafeAreaProvider) in SafeAreaProvider (created by SafeAreaInsetsContext) in SafeAreaProviderCompat (created by BottomTabView) in BottomTabView (created by BottomTabNavigator) in PreventRemoveProvider (created by NavigationContent) in NavigationContent in Unknown (created by BottomTabNavigator) in BottomTabNavigator (created by App) in EnsureSingleNavigator in BaseNavigationContainer in ThemeProvider in NavigationContainerInner (created by App) in App in RCTView (created by View) in View (created by AppContainer) in RCTView (created by View) in View (created by AppContainer) in AppContainer in NoMansLand(RootComponent)------------------------------------------------------------------------------------------------- 아래 부분은 사용하였던 코드입니다.. 긴글 읽어주셔서 감사합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
JPA Entity에 Bean Validation 적용시 오류 문제
[질문 내용]JPA 엔티티에 @NotNull 같은 Bean Validation을 사용하면 적용은 되지만 트랜잭션 에러가 발생하면서 BindingResult에 오류가 자동으로 담기지가 않아 타임리프 렌더링에서 오류 문구가 뜨는게 아니라 바로 오류 페이지로 넘어가는거 같은데 해결할 방법이 있을까요
-
해결됨포트폴리오 초간단 배포하기
강의 잘들었습니다! 포트폴리오 마무리에서 배포관련해서 궁금한점이 좀더 있어서 질문드립니다.
우선 프론트와 백엔드 , DB를 각각 인스턴스를 만들어서 배포하는 로직을 잘봤습니다.궁금한점이 jar파일을 github에 올리게되면application.yml or perterties 안에있는민감정보들이 노출되는 문제가 있다고 생각이드는데이런 민감정보는 어떤식으로 가리는게 좋을까요
-
해결됨실무에 바로 적용하는 프런트엔드 테스트 - 1부. 테스트 기초: 단위・통합 테스트
prop이나 state 값을 검증하지 않는다는 의미가 궁금합니다!
const textField = screen.getByPlaceholderText('텍스트를 입력해 주세요.'); expect(textField).toHaveClass('my-class');이부분에서 className이란 내부 props, state 값을 검증하는 게 아닌가 싶어서 질문을 드렸습니다. 물론, className에 따라 변경되는 DOM을 파악한다는 의미로도 해석이 될 수는 있을 것 같긴 하지만 더 정확한 문맥을 알고 싶어서 질문드렸습니다..!
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
안녕하세요! 강사님 예외처리에 대한 질문이 있습니다.
현재 강의에서는 정상적인 코드면 무한루프가 종료되는걸로 생각하고 있습니다.하지만1. 재고가 감소시켜야 하는 수량 보다 적을 경우는 무한루프를 도는것을 확인했습니다.어떻게 예외처리를 해야할 지 잘 모르겠어서 질문드립니다 ㅠ public class Stock { // ... public void decrease(Long quantity) { if (this.quantity - quantity < 0) { throw new RuntimeException("재고 수량이 부족합니다."); } this.quantity -= quantity; } }public class OptimisticLockService { private final StockRepository stockRepository; @Transactional public void decrease(Long id,Long quantity){ Stock stock = stockRepository.findByIdWithOptimisticLock(id); if (stock.getQuantity() < quantity) { throw new RuntimeException("재고 수량이 부족합니다."); } stock.decrease(quantity); } }stock 클래스에서 예외처리를 하는것이 좋을지 서비스 클래스에서 예외처리를 좋을지?!예외를 주고 OptimisticLockStockFacade에 대한 무한루프를 어떻게 처리할지..강의 잘 들었습니다 답변 부탁드려용 .. @Component @RequiredArgsConstructor public class OptimisticLockStockFacade { private final OptimisticLockService optimisticLockService; public void decrease(Long id, Long quantity) throws InterruptedException { while (true) { try { optimisticLockService.decrease(id, quantity); break; }catch(Exception e) { Thread.sleep(50); } } } } 현재 아래코드를 실행하면 무한루프가 나갑니다.! @Test @DisplayName("재고가 없을시 재고감소 로직 요청시 예외가 일어난다.") void decreaseStockZero() { //given //when //then assertThatThrownBy(() -> optimisticLockStockFacade.decrease(1L, 101L)) .isInstanceOf(RuntimeException.class) .hasMessage("이미 품절된 상품입니다."); }
-
해결됨실전! Querydsl
Querydsl 조회 시, DTO 필드를 List로 받는 방법을 알고 싶습니다.
안녕하세요.Querydsl 학습 중에 궁금한 점이 있어서 질문드립니다. Projection을 이용해서 조회 데이터를 DTO에 반환 받고 싶습니다.하지만, DTO 필드에 List 타입이 정의되어 있습니다.이런 경우에는 어떤식으로 데이터를 조회할 수 있는지 궁금합니다. 또한, 현업에서는 이런 형태의 데이터를 조회하기 위해서 어떤 방식으로 하는지 궁금합니다.객체 그래프 탐색을 이용한 Lazy 조회 후, 로직에서 조건 필터링 ?각 조건에 맞는 쿼리 여러번 호출 ?DTO Projection을 이용한 한방 쿼리 ?다른 방식 ? 조회 데이터를 반환 받기 위한 ProductDto는 다음과 같습니다.public record ProductDto( Long id, String name, int reviewScore, int reviewCount, int originalPrice, int salesPrice, List<String> productImages, List<String> productDetailImages ) { @QueryProjection public ProductDto { } } 데이터를 조회 하고자 하는 의도가 담긴 Querydsl은 다음과 같습니다.public ProductDto findSellingProductById(Long id) { return queryFactory .select(new QProductDto( product.id, product.name, product.reviewScore, product.reviewCount, productOption.originalPrice, productOption.salesPrice, productImage.imageUrl, productDetailImage.imageUrl )) .from(product) .leftJoin(product.productOptions, productOption) .on(productOption.isDefault.isTrue(), productOption.isSaleable.isTrue(), productOption.isDeleted.isFalse()) .leftJoin(product.productImages, productImage) .on(productImage.isDeleted.isFalse()) .leftJoin(product.productDetailImages, productDetailImage) .on(productDetailImage.isDeleted.isFalse()) .where(product.id.eq(id)) .fetchOne(); } Product, ProductOption, ProductImage, ProductDetailImage 엔티티는 다음과 같습니다.@Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Product extends BaseDateTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "product_id") private Long id; @Column(length = 50) private String name; private int reviewScore; private int reviewCount; // ... 중략 @OneToMany(mappedBy = "product", cascade = CascadeType.ALL) private List<ProductImage> productImages = new ArrayList<>(); @OneToMany(mappedBy = "product", cascade = CascadeType.ALL) private List<ProductDetailImage> productDetailImages = new ArrayList<>(); @OneToMany(mappedBy = "product", cascade = CascadeType.ALL) private List<ProductOption> productOptions = new ArrayList<>(); // ... 중략 } @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class ProductOption extends BaseDateTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "product_option_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "product_id") private Product product; @Column(length = 30) private String name; private int originalPrice; private int salesPrice; // ... 중략 private Boolean isDefault; private Boolean isSaleable; private Boolean isDeleted; // ... 중략 } @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class ProductImage extends BaseDateTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "product_image_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "product_id") private Product product; private String imageUrl; private Boolean isDeleted; // ... 중략 } @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class ProductDetailImage extends BaseDateTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "product_detail_image_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "product_id") private Product product; private String imageUrl; private Boolean isDeleted; // .. 중략 } 감사합니다.
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
ScrollController 동작이 안되서 질문드립니다.
"완성된 Pagination 로직 실행해보기" 강의에서 Scroll 위치를 찾기 위해서 반영한 ScrollController에서 Listener를 등록해도 스크롤 할때 동작을 하지 않아서 문의드립니다. - 리스너를 등록해도 스크롤 시 print('run') 이 동작을 안합니다..
-
미해결스프링 핵심 원리 - 기본편
통합 테스트를 돌리면 오류가 발생합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 영한님 수업을 따라가면서 전체테스트를 돌릴때 CoreApplicationTest의contextLoads()에서 java.lang.IllegalStateException: Failed to load ApplicationContext for [MergedContextConfiguration@46963479 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@208e9ef6, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@34448e6c, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@7dc51783, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@3a43d133, org.springframework.boot.test.context.SpringBootTestAnnotation@1b8b1ee9], contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null]at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:180)at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:130)at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:142)at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:98)at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:260)at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:163)at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:310)at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735)at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734)at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)at java.base/java.util.Optional.orElseGet(Optional.java:364)at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberServiceImpl' defined in file [C:\SpringStudy\core\out\production\classes\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,memberRepositoryat org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798)at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:237)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1354)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1191)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:561)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521)at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:975)at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:959)at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624)at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456)at org.springframework.boot.SpringApplication.run(SpringApplication.java:334)at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3(SpringBootContextLoader.java:137)at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58)at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46)at org.springframework.boot.SpringApplication.withHook(SpringApplication.java:1454)at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run(SpringBootContextLoader.java:552)at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:137)at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:108)at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:225)at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:152)... 17 moreCaused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepositoryat org.springframework.beans.factory.config.DependencyDescriptor.resolveNotUnique(DependencyDescriptor.java:218)at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1420)at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353)at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:907)at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:785)... 41 more오류가 발생하였습니다. 해결하는법을 찾지 못해 넘기고 다음 동영상 수업을 들으면서 2분29초 부분의 고의적으로FixDiscountPolicy클래스도 @Component를 등록하여 오류를 발생시킨 뒤 OrderServiceImpl클레스의 생성자에서 ratediscountPolicy로 변경하면 오류가 사라진다는 설명을 듣고 따라해도 오류가 발생되어 해결을 하지 못하고 있습니다. 어떻게 해야하나요?
-
해결됨스프링 핵심 원리 - 기본편
[섹션 7-5] 같은 타입의 빈이 2개일 때 문제
[문제 상황]이전에는 컴포넌트 스캔의 대상으로 RateDiscountPolicy 만 등록해줬지만, FixDisCountPolicy에 @Component를 추가해서 컴포넌트 스캔의 대상으로 만들어줬습니다.그래서 같은 타입이 2개 이상일 때 @Autowired를 사용하면 오류가 발생해서 필드명을 빈 이름으로 변경하는 방법을 쓰기 위해 OrderServiceImpl의 코드를 아래와 같이 수정했습니다.OrderServiceImpl의 코드@Component public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; public OrderServiceImpl(MemberRepository memberRepository,DiscountPolicy rateDiscountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = rateDiscountPolicy; } 그리고 나서 아래의 테스트를 진행한 결과 ... AutoAppConfigTest public class AutoAppConfigTest { @Test @DisplayName("컴포넌트 스캔해서 스프링 빈 등록하기") void basicScan(){ AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class); MemberService memberService = ac.getBean(MemberService.class); assertThat(memberService).isInstanceOf(MemberService.class); } } AutoAppConfigTest 뿐만 아니라 CoreApplicationTests도 오류가 발생했습니다. 그리고 각각의 오류 메세지는 다음과 같습니다. AutoAppConfigTest 오류메세지 org.springframework.beans.factory.UnsatisfiedDependencyException:Error creating bean with name 'orderServiceImpl' defined in file [...\hello\core\order\OrderServiceImpl.class]:Unsatisfied dependency expressed through constructor parameter 1:No qualifying bean of type 'hello.core.discount.DiscountPolicy' available:expected single matching bean but found 2: fixDiscountPolicy,rateDiscountPolicy CoreApplicationTests 오류메세지 Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException:Error creating bean with name 'memberServiceImpl' defined in file :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 OrderServiceImpl 의 코드에서 rateDiscountPolicy로 코드를 수정했음에도 왜 빈을 구분 할 수 없다는 오류가 발생한 것이고 , CoreApplicationTests는 왜 오류가 발생한 것 일까요? 참고로 @Qualifier과 @Primary 를 사용하면 AutoAppConfigTest 는 성공하고CoreApplicationTests만 실패합니다 !! 아래는 CoreApplicationTests만 실패시 오류 메세지 입니다. 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 [질문 사항] @Autowired 매칭을 할 때 필드명, 파라미터 명으로 매칭 되어야하는데 왜 이름을 바꿨는데도 매칭이 안될까요?? AutoAppConfig의 오류는 Discount 타입을 임의로 두 개 설정해줘서 발생한 것이지만 CoreApplicationTests는 왜 오류가 발생한 걸까요?제 생각엔 수동으로 빈을 등록해주는 코드가 실행돼서 수동 빈들이 등록된 것같은데AutoAppConfig 클래스에서 @Configuration 어노테이션이 있으면 빈으로 등록되지 않게 필터도 설정했고, 테스트를 진행하며 작성한 코드도 모두 지워줬는데 왜 memberRepository가 빈으로 등록 되었을 까요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
properties logger 사용문제
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] <스프링 3.x.x 버전을 사용하고있습니다.>강의를 잘 따라가고 있었는데 properties 부분에서 막힙니다. 왜 로그가 안뜨는지 궁금합니다.
-
해결됨[2024] 한입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
originData.id 대신 useParams로 받은 id를 사용하여 삭제하면 안되는 이유
LocalStorage 사용 강의의 16분 50초 부근 "삭제하기" 버튼 관련 질문입니다.처음에 혼자 구현을 하려고 할 때 originData.id 대신 id를 onRemove에 파라미터로 전달했을 때 작동이 안됐는데 originData.id로 해야 삭제되더라고요. 콘솔로 찍었을 때 둘 다 일기 데이터의 id로 같은 걸 가리키는 것으로 나오는데 제가 잘못 알고 있는 부분이 있을까요? 안되는 이유가 무엇인가요? const handleDelete = () => { if (window.confirm("정말 삭제하시겠습니까?")) { console.log(id); console.log(originData.id); onRemove(originData.id); navigate("/", { replace: true }); } };
-
해결됨독하게 시작하는 C 프로그래밍
달팽이 문제] 설명을 듣지 않고 구현을 해봤습니다.
도전정신 때문에 설명 듣기 전에 구현을 했더니 강사님 의도와 다르게 구현되었지만.... 1시간 헤딩한 시간이 아까워서 남겨둡니다아~~두 가지 접근방법이 생각났는데, 그 중 하나는 이동 불가능할때마다 이동 방향을 바꾼다는 간단한 논리로 위 코드로 구현해봤고,두 번째로 생각난 접근방법은 위 그림처럼 블럭이 5, 4, 4, 3, 3, 2, 2, 1, 1 순으로 첫번째를 제외한 블럭 수가 2개씩 묶인다는 점이 생각났는데, 첫 번째 블록이 규칙에 살짝 어긋난다는 점에서 구현이 복잡해질 것 같아서 포기했습니다. 설명해주신 방법대로 위 그림에서의 블럭이 2개 합쳐진 채로 규칙을 찾았으면 간단하게 구현 가능했을 것 같습니다.설명해주신 방법으로도 구현을 해봐야겠네요..
-
미해결문과생도, 비전공자도, 누구나 배울 수 있는 파이썬(Python)!
jupyter-lab 실행 문의
jupyter-lab 실행할때 같은 jupyter-lab인데 제가 글자로 쓰면 실행이 안되고 다른 분이 jupyter-lab 쓴거 복붙한건 실행이 되는데 왜 그럴까요. 그렇다고 제가 쓴거 복붙 하면 안되고 오로지 다른 분이 쓰신 것만 복붙해야 돼요. 철자가 틀렸나 아무리 봐도 똑같아요
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MemberServiceTest에서 오류가 나는데 도와주세요 ㅠㅠ
<MemberService code><MemberRepository code><build.gradle><Error Messeage>어디가 문제일까요?감사합니다~~ㅜㅠㅠㅜㅠ 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
[에러 해결] 콜백 관련 오류 나오시는 분들
promise chain 적용하여 코드를 변경했습니다. 참고하시면 좋을 거 같아요! // index.jsapp.post('/api/users/logout', auth, (req, res) => { User.findOneAndUpdate({ _id: req.user._id }, { token: "" }) .then(() => { return res.status(200).json({ logoutSuccess: true }); }) .catch((err) => { return res.status(400).json({ logoutSuccess: false, message: err.message }); }) })// auth.jsfunction auth(req, res, next) { // 쿠키에서 토큰 가져오기 const token = req.cookies.x_auth; console.log("token is ", token); // 토큰 복호화 및 유저 검색 User.findByToken(token) .then((user) => { if (!user) { throw new Error("유효하지 않은 토큰입니다."); } // 토큰과 유저정보를 다음 단계로 전달함. req.token = token; req.user = user; return next(); }) .catch((err) => { return res.status(401).json({ isAuth: false, message: err.message }); }) }// User.jsuserSchema.statics.findByToken = function(token) { const user = this; return util.promisify(jwt.verify)(token, 'secretToken') .then((decoded) => { console.log(decoded); return user.findOne({ "_id": decoded, "token": token }); }) .catch((err) => { console.log(err); throw new Error("유효하지 않은 토큰입니다."); }); }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
window cmd 창 error
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]C:\JAVA\SPRING\hello-spring gradlew.batC:\JAVA\SPRING\hello-spring gradlew build 도 해보고C:\JAVA\SPRING\hello-spring gardlew clean build 해봤습니다.그리고 환경변수도 구글보고 설정도 잘해주었는데 계속 에러가 뜨네요 왜 그럴까요오늘 하루종일 구글링해서 찾아보았는데 해결이 안됩니다.