Spring не может найти bean repository

161
15 января 2019, 09:10

Никак Spring не хочет находить bean:

@Repository

public interface CartRepository extends JpaRepository{

} Вызываю так:

@Autowired
private CartRepository repository;

UPD: Добавил конструктор с параметром:

@Autowired
public CartService(CartRepository repository, ProductRepository pRepository){
    this.repository = repository; 
    this.pRepository = pRepository;
}

Теперь получаю такое:

org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'cartService' defined in file
[E:\test\test\target\test-1.0\WEB-INF\classes\com\test\service\CartService.class]:
Unsatisfied dependency expressed through constructor argument with
index 0 of type [com.test.repository.GenericRepository]: : No
qualifying bean of type [com.test.repository.GenericRepository]
found for dependency: expected at least 1 bean which qualifies as
autowire candidate for this dependency. Dependency annotations: {};
nested exception is
org.springframework.beans.factory.NoSuchBeanDefinitionException: No
qualifying bean of type [com.test.repository.GenericRepository]
found for dependency: expected at least 1 bean which qualifies as
autowire candidate for this dependency. Dependency annotations: {}  at
org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:730)
    at
org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:196)
    at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1045)
    at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:949)
    at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:487)
    at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
    at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
    at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
    at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:628)
    at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
    at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
    at
org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)
    at
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)
    at
org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
    at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4736)
    at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5181)
    at
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
    at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
    at
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
    at
org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:586)
    at
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:460)
    at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1586)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)     at
org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
    at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
    at
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
    at
org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1460)
    at
org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:906)
    at
org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:344)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)     at
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at
org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)
    at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:614)
    at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
    at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
    at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
    at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
    at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
    at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
    at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)

Caused by:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No
qualifying bean of type [com.test.repository.GenericRepository]
found for dependency: expected at least 1 bean which qualifies as
autowire candidate for this dependency. Dependency annotations: {}  at
org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:988)
    at
org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:858)
    at
org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:770)
    at
org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:795)
    at
org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:723)
    ... 63 more

В чем проблема может быть?

Answer 1

Нельзя так писать MyRepository<EntityType, IdType> extends JpaRepository<EntityType, IdType>

Подумайте над тем, что происходит: при запуске приложения Spring "проходиться" по всем репозиториям и "на лету" создает классы, которые реализуют интерфейсы (в Вашем случае это GenericRepository). А теперь подумайте как Spring будет создавать класс, который реализует вот такой инферфейс GenericRepository<EntityType, IdType>, откуда он возьмет тип для EntityType и IdType?

READ ALSO
Как отобразить в grid layout все изображения на устройстве?

Как отобразить в grid layout все изображения на устройстве?

Всем привет, есть такой таск - отобразить все изображения хранящиеся в Android устройстве в Grid LayoutЯзык Java

171
Как реализовать коллизию HashMap?

Как реализовать коллизию HashMap?

Задался таким банальным вопросом как "хочу увидеть коллизию своими глазами в 8 джаве"Из истоков известно, что колизия возникает в том случае,...

165
Запуск jar через файл sh в Windows

Запуск jar через файл sh в Windows

по заданию проекта должен выслать решение, которое будет запускаться файлом с форматомbat и

135
Ошибка валидации даты

Ошибка валидации даты

Есть такой сервис:

202