org.springframework.beans.factory.NoSuchBeanDefinitionException:没有名为' libraryEntityManagerFactory'被定义为

时间:2017-06-06 05:21:30

标签: spring-boot spring-data-jpa

我使用Spring boot版本1.3.5.RELEASE为我的应用程序。当我配置数据源时,它会抛出一些例外。它显示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

application.properties

@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]

栈跟踪

   DB::table('carts')                
           ->sum(\DB::raw('carts.price+COALESCE(carts.support,0)+COALESCE(carts.installation,0)' ))
           ->where('status','=',1)  
           ->where('user_id','=',$id);

1 个答案:

答案 0 :(得分: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();
      }