首先,我的目录结构是这样的:
然后,我的配置是这样的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | @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; } } |
然后启动就报错:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | *************************** 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. |
请问老师,还要做什么配置吗?