2015-11-21 23 views
11

In einer Spring Boot-Anwendung versuche ich mehrere Datenbankverbindungen einzurichten. Ich habe begonnen, die primäre Datenquelle zu erstellen, aber ich erhalte den folgenden Fehler bei der Methode mySqlEntityManagerFactory.Spring Boot EntityManagerFactoryBuilder nicht autowired

Konnte nicht autowire. keine Bohnen von EntityManagerFactoryBuilder

import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; 
import org.springframework.boot.context.properties.ConfigurationProperties; 
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.context.annotation.Primary; 
import org.springframework.data.jpa.repository.config.EnableJpaRepositories; 
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; 
import org.springframework.transaction.annotation.EnableTransactionManagement; 
import org.springframework.transaction.annotation.Transactional; 

import javax.persistence.PersistenceContext; 
import javax.sql.DataSource; 
import java.util.HashMap; 
import java.util.Map; 

@Configuration 
@Transactional 
@EnableTransactionManagement 
@EnableJpaRepositories(
     basePackages = "digital.sheppard.dao", 
     entityManagerFactoryRef = "entityManager", 
     transactionManagerRef = "transactionManager") 
public class PrimaryDBConfig { 

    @Bean(name="dataSource") 
    @Primary 
    @ConfigurationProperties(prefix = "primary.datasource.mysql") 
    public DataSource mysqlDataSource() { 
     return DataSourceBuilder.create().build(); 
    } 

    @PersistenceContext(unitName = "primary") 
    @Primary 
    @Bean(name = "entityManager") 
    public LocalContainerEntityManagerFactoryBean mySqlEntityManagerFactory(EntityManagerFactoryBuilder builder) { 
     return builder.dataSource(mysqlDataSource()).persistenceUnit("primary").properties(jpaProperties()) 
       .packages("digital.sheppard.model").build(); 
    } 

    private Map<String, Object> jpaProperties() { 
     Map<String, Object> props = new HashMap<String, Object>(); 
     props.put("hibernte.ejb.naming_strategy", "org.hibernate.cfg.ImprovedNamingStrategy"); 
     props.put("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect"); 

     return props; 
    } 

} 

Wie würden autowire ich die EntityManagerFactoryBuilder?

Ich versuche, den Code in diesem Blog https://raymondhlee.wordpress.com/2015/10/31/configuring-multiple-jpa-entity-managers-in-spring-boot/

Hier ist die Hauptanwendungsklasse zu folgen, wenn sie nützlich ist

@Configuration 
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) 
@ComponentScan 
public class Application extends SpringBootServletInitializer { 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 

} 
+0

Haben Sie alle Hibernate-bezogenen Autokonfigurationsklassen deaktiviert (z. B. HibernateJpaAutoConfiguration.class)? – dunni

+0

Ja @EnableAutoConfiguration (exclude = {DataSourceAutoConfiguration.class}) in der Hauptklasse Application. Ich habe die Frage mit diesem Code aktualisiert – SheppardDigital

+0

@Sheppard Ich begegne dem gleichen Problem. gefundene Lösung dafür? – Suresh

Antwort

0

es von Ihrer ide Software verursacht wurde, diese Optionen einrichten enter image description here

+0

Einstellungen -> Inspektionen -> Feder -> Warnung –