首先,我的目录结构是这样的:

然后,我的配置是这样的:
@Configuration
public class DbConfig {
@Primary
@Bean("db1EntityManager")
public LocalContainerEntityManagerFactoryBean db1EntityManager() {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
vendorAdapter.setGenerateDdl(true);
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
Map<String, String> map = new HashMap<>();
map.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
em.setJpaPropertyMap(map);
em.setDataSource(db1DataSource());
em.setPackagesToScan("com.gaojingsi.transaction.muiltidatasourcetransactiondemo.entity.db1");
em.setJpaVendorAdapter(vendorAdapter);
return em;
}
@Primary
@Bean(name = "db1DataSource")
@ConfigurationProperties(prefix = "spring.datasource.db1")
public DataSource db1DataSource() {
return DataSourceBuilder.create().build();
}
@Bean("db2EntityManager")
public LocalContainerEntityManagerFactoryBean db2EntityManager() {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
vendorAdapter.setGenerateDdl(true);
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
Map<String, String> map = new HashMap<>();
map.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
em.setJpaPropertyMap(map);
em.setDataSource(db2DataSource());
em.setPackagesToScan("com.gaojingsi.transaction.muiltidatasourcetransactiondemo.entity.db2");
em.setJpaVendorAdapter(vendorAdapter);
return em;
}
@Bean(name = "db2DataSource")
@ConfigurationProperties(prefix = "spring.datasource.db2")
public DataSource db2DataSource() {
return DataSourceBuilder.create().build();
}
@Primary
@Bean
public PlatformTransactionManager transactionManager() {
JpaTransactionManager jpaTransactionManager1 = new JpaTransactionManager();
jpaTransactionManager1.setEntityManagerFactory(db1EntityManager().getObject());
JpaTransactionManager jpaTransactionManager2 = new JpaTransactionManager();
jpaTransactionManager2.setEntityManagerFactory(db2EntityManager().getObject());
ChainedTransactionManager chainedTransactionManager = new ChainedTransactionManager(jpaTransactionManager1, jpaTransactionManager2);
return chainedTransactionManager;
}
}然后启动就报错:
*************************** APPLICATION FAILED TO START *************************** Description: Field db1UserDAO in com.gaojingsi.transaction.muiltidatasourcetransactiondemo.service.impl.UserServiceImpl required a bean named 'entityManagerFactory' that could not be found. The injection point has the following annotations: - @org.springframework.beans.factory.annotation.Autowired(required=true) Action: Consider defining a bean named 'entityManagerFactory' in your configuration.
请问老师,还要做什么配置吗?