import org.springframework.boot.springApplication; import org.springframework.boot.autoconfigure.enableAutoConfiguration; import org.springframework.boot.builder.springApplicationBuilder; import org.springframework.boot.context.web.springbootservletInitializer; import org.springframework.context.annotation.componentscan; @ComponentScan @EnableAutoConfiguration // @ activerjParePositories (Basepackages = "com.Sonychina.backend.Repository") La classe publique étend SpringbootServletinitializer {public static void Main (String [] args) {SpringApplication App = New SpringApplication (application.class); app.run (args); //SpringApplication.run(Application.class, args); } @Override Protected SpringApplicationBuilder Configure (application SpringApplicationBuilder) {return application.sources (application.class); }}importation java.util.map; import javax.sql.datasource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.jdbc.datasourceBuilder; import org.springframework.boot.autoconfigure.orm.jpa.entityManagerFactoryBuilder; import org.springframework.boot.autoconfigure.orm.jpa.jpaproperties; import org.springframework.boot.context.properties.configurationProperties; 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 com.test.entity.statistic.sySuser; import com.test.repository.system.SystemRepository; @Configuration @enablejParePositories (EntityManagerFactoryRef = "EntityManagerFactoryPrimary", BasEpackageClasses = {SystemRepository.class}) classe publique GlobalDataconfiguration {// @Autowired // private dbconfig dbconfig; @Autowired private jpaproperties jpaproperties; @Bean (name = "primordatasource") @primary @configurationproperties (prefix = "dataSource.primary") public dataSource primordatasource () {System.out.println ("------------------------ primaireDataSource init --------------"); return dataSourceBuilder.create (). build (); } @Bean (name = "SecondaryDataSource") @configurationProperties (prefix = "dataSource.secondary") public dataSource secondaryDatasource () {System.out.println ("----------------------- SecondaryDataSource init --------------"); // dataSourceBuilder factory = dataSourceBuilder // .Create (dbConfig.class.getClassloader ()) // .DriverClassName (dbConfig.getDriver ()) // .url (dbconfig.getUrl ()) // .Username (DbConfig.getUser ()) // .Password (dbConfig.getPassword ()); // return factory.build (); return dataSourceBuilder.create (). build (); } // @Bean (name = "EntityManagerPrimary") // @primary // entityManager entityManager (EntityManagerFactoryBuilder Builder) {// return CustomerAntityManagerFactory (Builder) .getObject (). CreateStityManager (); //} @Bean (name = "EntityManagerFactoryPrimary") @primary public localContainerEntityManagerFactoryBean CustomerTityManagerFactory (EntityManagerFactoryBuilder Builder) {return builder.datasource (primordatasource ()). .Packages (sysuser.class) .PersisTentenceUnit ("Système") .Build (); } map privé <string, string> getVendorProperties (dataSource dataSource) {return jpaproperties.GetHiberNateProperties (dataSource); }}importation java.util.map; import javax.sql.datasource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.qualifier; import org.springframework.boot.autoconfigure.orm.jpa.entityManagerFactoryBuilder; import org.springframework.boot.autoconfigure.orm.jpa.jpaproperties; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration; import org.springframework.data.jpa.repository.config.enablejParePositories; import org.springframework.orm.jpa.jpatransactionManager; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.transaction.platformTransactionManager; import org.springframework.transaction.annotation.enableTransactionManagement; import com.test.entity.manage.banner; import com.test.repository.manage.bannerRepository; @Configuration @enabletransactionManagement @enablejParePositories (EntityManagerFactoryRef = "EntityManagerFactorySecundary", TransactionManagerRef = "TransactionManagersEconcondary", BasepackageClasses = {BannerRepository.Classe}) Classe publique SecondEMFBConfig {@Autowired Privalired JPAPROPERTIES SECONDEMEMEMFBCONFIG {@Autowired Privated Jpaproperties SecondEmMo jpaproperties; @ Autowired @ Qualifier ("SecondaryDataSource") private dataSource dataSource; // @Bean (name = "EntityManagerPrimary") // @primary // entityManager entityManager (EntityManagerFactoryBuilder Builder) {// return CustomerTtityManagerFactory (Builder) .getObject (). CreateNtityManager (); //} @bean (name = "EntityManagerFactorySecondary") public localContaineRenttityManagerFactoryBean CustomeryManagerFactory (EntityManagerFactoryBuilder Builder) {return builder.datasource (DataSource) .Properties (GetVendraPperties (DataSource)) .Properties) .PerSistenceUnit ("Clients") .Build (); } map privé <string, string> getVendorProperties (dataSource dataSource) {return jpaproperties.GetHiberNateProperties (dataSource); } @Bean (name = "TransactionManagersEncondary") PlatformTransactionManager TransactionManagersEncondary (EntityManagerFactoryBuilder Builder) {return new JPatransactionManager (CustomerAntityManagerFactory (Builder) .getObject ()); }}import org.springframework.data.jpa.repository.jParePository; import org.springframework.data.jpa.repository.modification; import org.springframework.data.jpa.repository.query; import com.test.entity.manage.banner; L'interface publique BannerRepository étend JParePository <Banner, Long> {@modifier @Query ("Update Banner M Set M.Name =? 1 Where M.ID =? 2") Public Void Update (String BannerName, Long ID); } 1.5. 注意 : 对 @Primary 修饰的 LocalContaineRtityManagerFactoryBean 可以不用指定 TransactionManager , Spring 上下文自动使用默认的 JpatransactionManager , 但是对于第二个或第三个等等必须指定 TransactionManager 。可以参考 Springboot 官方文档中的相关章节。
总结
以上所述是小编给大家介绍的 Spring Boot Springjpa 支持多个数据源的实例代码 , 希望对大家有所帮助 , 如果大家有任何疑问请给我留言 , 小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!