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);
}
}
Haben Sie alle Hibernate-bezogenen Autokonfigurationsklassen deaktiviert (z. B. HibernateJpaAutoConfiguration.class)? – dunni
Ja @EnableAutoConfiguration (exclude = {DataSourceAutoConfiguration.class}) in der Hauptklasse Application. Ich habe die Frage mit diesem Code aktualisiert – SheppardDigital
@Sheppard Ich begegne dem gleichen Problem. gefundene Lösung dafür? – Suresh