2017-06-06 77 views
0

我为我的应用程序使用了spring引导版本1.3.5.RELEASE。当我配置数据源时,它会抛出一些例外。它显示org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'libraryEntityManagerFactory' is definedorg.springframework.beans.factory.NoSuchBeanDefinitionException:没有定义名为'libraryEntityManagerFactory'的bean

application.properties中

library.datasource.driver-class-name = com.mysql.jdbc.Driver 
library.datasource.url = jdbc:mysql://192.168.0.188:3306/library_keycloak?autoReconnect=true 
library.datasource.username = jijesh 
library.datasource.password = jijesh 

# Keep the connection alive if idle for a long time (needed in production) 
spring.datasource.testWhileIdle = true 
spring.datasource.timeBetweenEvictionRunsMillis = 60000 
spring.datasource.validationQuery = SELECT 1 

# Number of ms to wait before throwing an exception if no connection is available. 
spring.datasource.max-wait=10000 

# Maximum number of active connections that can be allocated from this pool at the same time. 
spring.datasource.max-active=50 

# Validate the connection before borrowing it from the pool. 
spring.datasource.test-on-borrow=true 

# Show or not log for each sql query 
spring.jpa.hibernate.connection.provider_class=org.hibernate.hikaricp.internal.HikariCPConnectionProvider 
spring.jpa.hibernate.hikari.minimumIdle=5 
spring.jpa.hibernate.hikari.maximumPoolSize=10 

# Show or not log for each sql query 
spring.jpa.show-sql = true 
spring.jpa.generate-ddl=true 
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect 
hibernate.temp.use_jdbc_metadata_defaults = false 
#Hibernate ddl auto (create, create-drop, update) 
#spring.jpa.hibernate.ddl-auto = update 
#spring.jpa.hibernate.ddl-auto = create-drop 
# Naming strategy 
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy 
# Use spring.jpa.properties.* for Hibernate native properties (the prefix is 
# stripped before adding them to the entity manager) 
# The SQL dialect makes Hibernate generate better SQL for the chosen database 
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect 

DB配置

@Configuration 
@ComponentScan("com.appscook.library.service") 
@EnableTransactionManagement 
@EnableJpaRepositories(
     entityManagerFactoryRef = "libraryEntityManagerFactory", 
     transactionManagerRef = "libraryTransactionManager", 
     basePackages = "com.appscook.library.*") 
public class LibraryDBConfig { 
     @Bean 
     @Primary 
     @ConfigurationProperties(prefix = "library.datasource") 
     public DataSource hrmsDataSource() 
     { 
     return DataSourceBuilder.create().build(); 
     } 

     @Bean 
     public LocalContainerEntityManagerFactoryBean hrmsEntityManagerFactory(final EntityManagerFactoryBuilder builder) 
     { 
     return builder 
      .dataSource(hrmsDataSource()) 
      .packages("com.appscook.library.domain") 
      .persistenceUnit("libraryPersistenceUnit") 
      .build(); 
     } 


     @Bean 
     public JpaTransactionManager hrmsTransactionManager(@Qualifier("libraryEntityManagerFactory") final EntityManagerFactory factory) 
     { 
     return new JpaTransactionManager(factory); 
     } 
} 

堆栈跟踪

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#2424cb9d': Cannot resolve reference to bean 'libraryEntityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'libraryEntityManagerFactory' is defined 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359) ~[spring-beans-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108) ~[spring-beans-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
    at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:634) ~[spring-beans-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:444) ~[spring-beans-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1123) ~[spring-beans-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1018) ~[spring-beans-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510) ~[spring-beans-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:299) ~[spring-beans-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
    ... 45 common frames omitted 
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'libraryEntityManagerFactory' is defined 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:698) ~[spring-beans-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1175) ~[spring-beans-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284) ~[spring-beans-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351) ~[spring-beans-4.2.6.RELEASE.jar:4.2.6.RELEASE] 

回答

0

找到答案

@Bean 
     public LocalContainerEntityManagerFactoryBean hrmsEntityManagerFactory(final EntityManagerFactoryBuilder builder) 
     { 
     return builder 
      .dataSource(hrmsDataSource()) 
      .packages("com.appscook.library.domain") 
      .persistenceUnit("libraryPersistenceUnit") 
      .build(); 
     } 

@Bean 
     public LocalContainerEntityManagerFactoryBean libraryEntityManagerFactory(final EntityManagerFactoryBuilder builder) 
     { 
     return builder 
      .dataSource(hrmsDataSource()) 
      .packages("com.appscook.library.domain") 
      .persistenceUnit("libraryPersistenceUnit") 
      .build(); 
     } 
相关问题