Данные Spring jpa- Определен бит bean с именем ‘entityManagerFactory’; Инъекция автоуведомленных зависимостей не удалась
Я разрабатываю приложение, используя весенние данные jpa, hibernate, mysql, tomcat7, maven, и это создает ошибку. Я пытаюсь понять это, но я потерпел неудачу.
ошибка Не удается разрешить ссылку на bean ‘entityManagerFactory’ при настройке аргумента конструктора; Не определен bean с именем «entityManagerFactory»; Инъекция автоуведомленных зависимостей не удалась
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'initDbService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.wahid.cse.repository.RoleRepository org.wahid.cse.service.InitDbService.roleRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'roleRepository': Cannot create inner bean '(inner bean)#c08f81' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#c08f81': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' is defined at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:292) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1185) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195) Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.wahid.cse.repository.RoleRepository org.wahid.cse.service.InitDbService.roleRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'roleRepository': Cannot create inner bean '(inner bean)#c08f81' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#c08f81': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' is defined at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:508) at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289) ... 22 more Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'roleRepository': Cannot create inner bean '(inner bean)#c08f81' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#c08f81': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' is defined at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:290) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:129) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1456) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1197) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:480) ... 24 more
вот мой файл ApplicationContext.xml
true create org.hibernate.dialect.MySQLDialect
Вот pom.xml
4.0.0 org.ferdous.wahid java-blog-aggregator 0.0.1-SNAPSHOT war 4.0.5.RELEASE 3.0.4 3.1.0 org.apache.commons commons-dbcp2 2.0.1 mysql mysql-connector-java 5.1.31 org.springframework.data spring-data-jpa 1.6.1.RELEASE org.hibernate hibernate-entitymanager 4.3.5.Final javax.servlet javax.servlet-api ${servlet-api-version} provided <!-- javax.servlet.jsp javax.servlet.jsp-api 2.2.1 --> jstl jstl 1.2 org.apache.tiles tiles-core ${apache.tiles} org.apache.tiles tiles-jsp ${apache.tiles} org.slf4j slf4j-log4j12 1.7.7 org.springframework spring-core ${org.springframework.version} org.springframework spring-expression ${org.springframework.version} org.springframework spring-beans ${org.springframework.version} org.springframework spring-aop ${org.springframework.version} org.springframework spring-context ${org.springframework.version} org.springframework spring-context-support ${org.springframework.version} org.springframework spring-tx ${org.springframework.version} org.springframework spring-jdbc ${org.springframework.version} org.springframework spring-orm ${org.springframework.version} org.springframework spring-oxm ${org.springframework.version} org.springframework spring-web ${org.springframework.version} org.springframework spring-webmvc ${org.springframework.version} org.springframework spring-webmvc-portlet ${org.springframework.version} org.springframework spring-test ${org.springframework.version} test org.apache.tomcat.maven tomcat7-maven-plugin 2.2 org.apache.maven.plugins maven-compiler-plugin 3.1 1.7 1.7
при4.0.0 org.ferdous.wahid java-blog-aggregator 0.0.1-SNAPSHOT war 4.0.5.RELEASE 3.0.4 3.1.0 org.apache.commons commons-dbcp2 2.0.1 mysql mysql-connector-java 5.1.31 org.springframework.data spring-data-jpa 1.6.1.RELEASE org.hibernate hibernate-entitymanager 4.3.5.Final javax.servlet javax.servlet-api ${servlet-api-version} provided <!-- javax.servlet.jsp javax.servlet.jsp-api 2.2.1 --> jstl jstl 1.2 org.apache.tiles tiles-core ${apache.tiles} org.apache.tiles tiles-jsp ${apache.tiles} org.slf4j slf4j-log4j12 1.7.7 org.springframework spring-core ${org.springframework.version} org.springframework spring-expression ${org.springframework.version} org.springframework spring-beans ${org.springframework.version} org.springframework spring-aop ${org.springframework.version} org.springframework spring-context ${org.springframework.version} org.springframework spring-context-support ${org.springframework.version} org.springframework spring-tx ${org.springframework.version} org.springframework spring-jdbc ${org.springframework.version} org.springframework spring-orm ${org.springframework.version} org.springframework spring-oxm ${org.springframework.version} org.springframework spring-web ${org.springframework.version} org.springframework spring-webmvc ${org.springframework.version} org.springframework spring-webmvc-portlet ${org.springframework.version} org.springframework spring-test ${org.springframework.version} test org.apache.tomcat.maven tomcat7-maven-plugin 2.2 org.apache.maven.plugins maven-compiler-plugin 3.1 1.7 1.7
,4.0.0 org.ferdous.wahid java-blog-aggregator 0.0.1-SNAPSHOT war 4.0.5.RELEASE 3.0.4 3.1.0 org.apache.commons commons-dbcp2 2.0.1 mysql mysql-connector-java 5.1.31 org.springframework.data spring-data-jpa 1.6.1.RELEASE org.hibernate hibernate-entitymanager 4.3.5.Final javax.servlet javax.servlet-api ${servlet-api-version} provided <!-- javax.servlet.jsp javax.servlet.jsp-api 2.2.1 --> jstl jstl 1.2 org.apache.tiles tiles-core ${apache.tiles} org.apache.tiles tiles-jsp ${apache.tiles} org.slf4j slf4j-log4j12 1.7.7 org.springframework spring-core ${org.springframework.version} org.springframework spring-expression ${org.springframework.version} org.springframework spring-beans ${org.springframework.version} org.springframework spring-aop ${org.springframework.version} org.springframework spring-context ${org.springframework.version} org.springframework spring-context-support ${org.springframework.version} org.springframework spring-tx ${org.springframework.version} org.springframework spring-jdbc ${org.springframework.version} org.springframework spring-orm ${org.springframework.version} org.springframework spring-oxm ${org.springframework.version} org.springframework spring-web ${org.springframework.version} org.springframework spring-webmvc ${org.springframework.version} org.springframework spring-webmvc-portlet ${org.springframework.version} org.springframework spring-test ${org.springframework.version} test org.apache.tomcat.maven tomcat7-maven-plugin 2.2 org.apache.maven.plugins maven-compiler-plugin 3.1 1.7 1.7
RoleRepository – это
- log4j: WARN Для журнала в web.xml не найдено никаких добавлений.
- Может ли кто-нибудь объяснить отображение сервлетов?
- Как вернуть пользовательский объект из запроса Spring JPA GROUP BY
- Как получить текст ошибки в controllerе от BindingResult
- Использование Spring MVC Test для модульного тестирования многостраничного запроса POST
import org.springframework.data.jpa.repository.JpaRepository; import org.wahid.cse.entity.Role; public interface RoleRepository extends JpaRepository{ }
- Каков наилучший способ получить текущий URL в Spring MVC?
- Spring MVC - Как вернуть простую строку в JSON в Rest Controller
- Spring HandlerInterceptor vs Servlet Filters
- Как установить базовый url для restа в весенний ботинок?
- Spring настроить формат @ResponseBody JSON
- Spring RedirectAttributes: addAttribute () vs addFlashAttribute ()
- Что такое @ModelAttribute в Spring MVC?
- Как вручную установить аутентифицированного пользователя в Spring Security / SpringMVC
Spring Data JPA по умолчанию ищет EntityManagerFactory с именем entityManagerFactory
. EnableJpaRepositories
эту часть Javadoc of EnableJpaRepositories
или Table 2.1
документации Spring JPA.
Это означает, что вам либо нужно переименовать ваш компонент entityManagerFactory
в entityManagerFactory
либо изменить конфигурацию Spring для:
(если вы используете XML)
или
@EnableJpaRepositories(basePackages="your.package", entityManagerFactoryRef="emf")
(если вы используете Java Config)
В контексте приложения измените компонент с id из entityManagerFactory
на entityManagerFactory
:
true create org.hibernate.dialect.MySQLDialect
к
true create org.hibernate.dialect.MySQLDialect
У меня был этот вопрос после перехода от spring-boot-starter-data-jpa
ver. От 1.5.7 до 2.0.2 (от старого спящего режима до спящего режима 5.2). В моем classе @Configuration
я ввел entityManagerFactory
и transactionManager
.
//I've got my data source defined in application.yml config file, //so there is no need to configure it from java. @Autowired DataSource dataSource; @Bean public LocalContainerEntityManagerFactoryBean entityManagerFactory() { //JpaVendorAdapteradapter can be autowired as well if it's configured in application properties. HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); vendorAdapter.setGenerateDdl(false); LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); factory.setJpaVendorAdapter(vendorAdapter); //Add package to scan for entities. factory.setPackagesToScan("com.company.domain"); factory.setDataSource(dataSource); return factory; } @Bean public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) { JpaTransactionManager txManager = new JpaTransactionManager(); txManager.setEntityManagerFactory(entityManagerFactory); return txManager; }
Также не забудьте добавить зависимость hibernate-entitymanager к pom.xml, иначе EntityManagerFactory не будет найден в пути к classам:
org.hibernate hibernate-entitymanager 5.0.12.Final
Я думаю, что это связано с новой версией весенней загрузки плюс использование весенних данных JPA, просто замените аннотацию @Bean выше общедоступной LocalContainerEntityManagerFactoryBean entityManagerFactory () на @Bean (name = “entityManagerFactory”)
Определение имени компонента должно решить проблему