묻고 답해요
129만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 핵심 원리 - 기본편
필터 강의 오류 NoUniqueBeanDefinitionException
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]오류 내용입니다.java.lang.IllegalStateException: Failed to load ApplicationContext for [MergedContextConfiguration@bd1111a 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@13e3c1c7, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@6c6c5427, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@1e63ec0b, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@62dae540, org.springframework.boot.test.context.SpringBootTestAnnotation@9ec68d48], 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:141) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:97) 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 [/Users/user/Desktop/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,memberRepository at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:802) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:241) 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:960) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:625) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:762) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:464) 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:1458) 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,memberRepository at 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:911) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789) ... 41 more 어느부분을 수정해야할지 모르겠습니다..ㅠㅠ
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Bean으로 등록하지 않고, Servlet의 Filter를 사용하는 방법은 무엇인가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]영상을 보면 Filter를 사용하기 위해 아래와 같이 스프링 컨테이너에 Bean 등록하는 것을 볼 수 있습니다.@Bean public FilterRegistrationBean logFilter() { FilterRegistrationBean<Filter> filterRegistrationBean = new FilterRegistrationBean<>(); filterRegistrationBean.setFilter(new LogFilter()); filterRegistrationBean.setOrder(1); filterRegistrationBean.addUrlPatterns("/*"); return filterRegistrationBean; }근데 사실 의문인 부분이 있습니다.Filter는 Servlet 기술이기 때문에, Spring이 없어도 동작할 수 있어야 합니다.그래서 검색을 해봤죠. 보통 Servlet의 필터는 어떻게 사용하는지 아래와 같이 web.xml 에 등록해서 사용하더군요. <filter> <filter-name>filter1</filter-name> <filter-class>com.app.GFGFilter</filter-class> </filter> <filter-mapping> <filter-name>filter1</filter-name> <url-pattern>/GFGServlet</url-pattern> </filter-mapping>xml을 사용하는 것 보니까 Maven을 사용할 때 방식인 것 같은데요. Gradle을 사용할 때는 어떻게 설정해줘야 Filter를 사용할 수 있죠? Bean으로 등록하지 않고 사용하는 방법이 궁금합니다.
-
해결됨스프링 핵심 원리 - 기본편
필터 - 'No bean named 'beanA' available' 에러
package hello.core.scan.filter; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.*; import static org.springframework.context.annotation.ComponentScan.*; public class ComponentFilterAppConfigTest { @Test void filterScan() { ApplicationContext ac = new AnnotationConfigApplicationContext(ComponentFilterAppConfigTest.class); BeanA beanA = ac.getBean("beanA", BeanA.class); //여기서 계속 문제 발생 assertThat(beanA).isNotNull(); assertThrows( NoSuchBeanDefinitionException.class, () -> ac.getBean("beanB", BeanB.class)); } @Configuration @ComponentScan( includeFilters = @Filter(type = FilterType.ANNOTATION, classes = MyIncludeComponent.class), excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = MyExcludeComponent.class) ) static class ComponentFilterAppConfig { } } 안녕하세요, '필터' 강의에서 filterScan 테스트 하는 부분에서 계속해서 아래와 같은 에러가 발생하네요(강의에서는 5분 3초에서 실행하는 부분입니다.)org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'beanA' available처음부터 다시 써보기도하고 이전의 질문들을 찾아보기도 했지만 이 테스트 코드는 계속해서 통과를 할 수 없네요ㅠ어떤 문제인지 도와주실 수 있다면 정말 감사드리겠습니다!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
필터사용
(인터셉터 대신) 특별히 필터를 사용해야 하는 경우는 어떤경우가 있을까요?
-
미해결한입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
setData에서 filter하는 부분에 질문있습니다!
안녕하세요! 먼저 강의 제작해주셔서 감사합니다. 많은 도움이 되고있어요!! 14분20분 부터 날짜에 따라 일기 필터링 하는 부분인 setData( diaryList.filter((it) => firstDay <= it.date && it.date <= lastDay) ); 이 코드에서 &&가 어떤식으로 사용되었는지 잘 모르겠어요..
-
미해결스프링부트 시큐리티 & JWT 강의
Authorization 검증 filter 2곳의 차이점이 궁금합니다 !
안녕하세요 강사님? 먼저 좋은 강의 감사드립니다 ! 수강 중 궁금한점이 있어 질문드립니다. 현재 Authorization Header에 대한 검증이 아래 2필터에서 이뤄지고 있습니다. - filter3 - BasicAuthenticationFilter 얕은 지식으로 고민해보았을 때, Authorization의 검증은 BasicAuthenticationFilter에서만 처리해도 충분하지 않을까? 라는 의문이 들었습니다. filter3(addFilterBefore)에서 이뤄지는 Authorization 헤더의 검증이 어떤 의미가있을까요?? 큰 의미가 없다면.. 어떠한 경우에 자주 활용되는지 궁금합니다 ! 또, 일반적으로 Authorization을 검증하는 Best Practice가 궁금합니다 ..!
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
Api gateway 필터
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 Api gateway 필터 설정에서 remove request header=Cookie를 하는 이유가 무엇인가요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
스프링 웹 프로젝트에서 서블릿 필터, 인터셉터, AOP가 선언된 경우 AOP가 동작하는 시점에 대한 질문입니다.
안녕하세요. 스프링 MVC Part.2 강좌에서 필터와 인터셉터를 배우고나서, 서블릿 필터, 스프링 인터셉터, AOP가 모두 선언이 되어 있는 경우 AOP가 동작하는 시점에 대해 질문을 드리고자 글을 남깁니다. [강의 자료에서 가져온 필터, 인터셉터의 동작 과정] HTTP 요청 -> WAS -> 필터 -> 서블릿(디스패처 서블릿) -> 스프링 인터셉터 -> 컨트롤러 동작 과정을 보다가 문득 든 생각입니다. '그럼 AOP는 어느 구간에서 요청을 캐치해서 동작하는거지?' 예를 들어, 공통 관심 사항(메소드 실행시간 체크)을 처리하는 AOP를 @Around(핵심 기능 실행 전/후 동작)로 선언했다면 AOP가 동작하는 과정은 아래 과정이 맞을까요? HTTP 요청 -> WAS -> 필터 -> 서블릿(디스패처 서블릿) -> 스프링 인터셉터 -> AOP -> 컨트롤러 무조건 위 과정이 맞는지 아니면 공통 관심 사항을 적용하는 방법(메소드 실행 전, 후, 전+후)에 따라 바뀌는지 궁금합니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
AOP와 서블릿 필터/스프링 인터셉터의 사용 시점에 대한 질문입니다.
안녕하세요. 서블릿 필터 - 소개 강의 내용 4:45 부분에서 '웹과 관련된 공통 관심사는 AOP보다 서블릿 필터 또는 스프링 인터셉터를 이용하는 것이 좋다.' 라는 말씀을 언급해 주셨는데요. 스프링 입문 강의 파트에서 AOP에 대해서 맛보기로 다룰 때 예제 코드에서는 특정 메소드의 실행 시간을 출력해 보는 용도로써 AOP 기술을 사용해 본 적이 있습니다. 여기서 궁금한 것은 실무에서. 물론 규모에 따라 다르겠지만, 보편적으로 웹과 관련된 공통 관심사를 서블릿 필터와 스프링 인터셉터로 구현했다면 AOP를 사용하여 구현할 공통 관심사항에는 메소드 실행시간 외 어떤 것들이 있는지 궁금합니다. 미리 답변 감사드립니다.
-
미해결스프링 시큐리티
Servlet Filter 질문이 있습니다.
안녕하세요. 선장님. 먼저 좋은 강의 제공해주셔서 감사합니다. 많은 공부 자료 및 자극을 주셔서 잘 공부하고 있습니다. Security 공부를 하면서 궁금한 점이 생겼습니다. DelegatingFilterProxy는 일반적인 서블릿 필터이고, 그 필터 구현 처리를 스프링에 빈으로 위임한다. 라고 이해 했습니다. 그러면 Servlet Filter를 Bean으로 등록하면 SpringContext에 접근 가능 하다고 이해해도 되는 걸까요 ?? Security가 한번에 와닿지는 않아서 여러번 보며 공부해야 할 것 같습니다 ㅎㅎ,,