importar org.springframework.boot.springapplication; importar org.springframework.boot.autoconfigure.enableautoconfiguration; importar org.springframework.boot.builder.springapplicationBuilder; importar org.springframework.boot.context.web.springbootservletinitializer; importar org.springframework.context.annotation.componentscan; @ComponentsCan @enableAutoconfiguration // @enkablejparePositories (basepackages = "com.sonyChina.backend.repository") La aplicación de clase pública extiende SpringBootServletInitializer {public static void main (string [] argumenta) {springapplication App = new springapplication (aplicación.class); app.run (args); //Springapplication.run(application.class, args); } @Override SpringApplicationBuilder Configure (SpringApplicationBuilder Application) {return Application.Sources (Application.Class); }}import java.util.map; import javax.sql.dataSource; importar org.springframework.beans.factory.annotation.aUtowired; importar org.springframework.boot.autoconfigure.jdbc.datasourceBuilder; importar org.springframework.boot.autoconfigure.orm.jpa.entitymanagerFactoryBuilder; importar org.springframework.boot.autoconfigure.orm.jpa.jpaproperties; importar org.springframework.boot.context.properties.configurationProperties; importar org.springframework.context.annotation.bean; importar org.springframework.context.annotation.configuration; importar org.springframework.context.annotation.primary; importar org.springframework.data.jpa.repository.config.enableJParepositories; importar org.springframework.orm.jpa.localContainerEntityManagerFactoryBean; import com.test.entity.statistic.sysuser; import com.test.repository.system.systemrePository; @Configuration @enableJparePositories (EntityManagerFactoryRef = "EntityManagerFactoryPrimary", BasePackAgeClasses = {SystemRepository.Class}) clase pública globalDataconfiguration {// @aUtowired // private dbconfig dbconfig; @Autowired JPAPROPERTIES JPAPROPERTIES; @Bean (name = "primarioDataSource") @Primary @ConfigurationProperties (prefix = "DataSource.Primary") Public DataSource PrimarioDataSource () {System.out.println ("--------------------- PrimaryDataSource Init ----------------------"); return dataSourceBuilder.Create (). Build (); } @Bean (name = "SecondAyDataSource") @ConfigurationProperties (prefix = "DataSource.Secondary") Public DataSource SecondAyDataSource () {System.out.println ("----------------------- SecondAryDataSource Init ----------------------"); // dataSourceBuilder fábrica = DataSourceBuilder // .Create (dbconfig.class.getClassLoader ()) // .DrivClassName (dbconfig.getdriver ()) // .Url (dbconfig.getUrl ()) // .username (dbconfig.getuser ()) // .password (dbconfig.getPassword ()); // return factory.build (); return dataSourceBuilder.Create (). Build (); } // @Bean (name = "EntityManagerPrimary") // @Primary // public EntityManager EntityManager (EntityManagerFactoryBuilder Builder) {// return CustomerTityManagerFactory (Builder) .GetObject (). CreateEntityManager (); //} @Bean (name = "EntityManagerFactoryPrimary") @Primary PublicContainerEntityManagerFactoryBean CustomerEntityManagerFactory (EntityManagerFactoryBuilder Builder) {return Builder.DataSource (primarioDataSource ()). .packages (sysuser.class) .PersistenceUnit ("Sistema") .Build (); } mapa privado <string, string> getVendorProperties (DataSource DataSource) {return jpaproperties.gethibernateProperties (dataSource); }}import java.util.map; import javax.sql.dataSource; importar org.springframework.beans.factory.annotation.aUtowired; importar org.springframework.beans.factory.annotation.Qalifier; importar org.springframework.boot.autoconfigure.orm.jpa.entitymanagerFactoryBuilder; importar org.springframework.boot.autoconfigure.orm.jpa.jpaproperties; importar org.springframework.context.annotation.bean; importar org.springframework.context.annotation.configuration; importar org.springframework.data.jpa.repository.config.enableJParepositories; importar org.springframework.orm.jpa.jpatransactionManager; importar org.springframework.orm.jpa.localContainerEntityManagerFactoryBean; importar org.springframework.transaction.platformtransactionManager; importar org.springframework.transaction.annotation.enabletransactionManagement; import com.test.entity.manage.banner; import com.test.repository.manage.bannerRepository; @Configuration @enableTransactionManagement @enableJparePositories (EntityManagerFactoryRef = "EntityManagerFactorySecondary", TransActionManagerRef = "TransactionManagerSecondary", BasePackAGeClasses = {BannerRepository.Classs}) Class pública SecondEMFBConfig {@AutowOwired Jpaproperties Jpaproperties Jpaproperties; @Autowired@Qualifier ("SecondAyDataSource") DataSource de datos privado; // @Bean (name = "EntityManagerPrimary") // @Primary // public EntityManager EntityManager (EntityManagerFactoryBuilder Builder) {// return CustomerIntityManagerFactory (Builder) .GetObject (). CreateEntityManager (); //} @Bean (name = "EntityManagerFactorySecundary") público localContainerEnTityManagerFactoryBean CustomerEntityManagerFactory (EntityManagerFactoryBuilder Builder) {return Builder.DataSource (DataSource) .Properties (getVendorPerties (DataSource)) .packages (banner.classs) .ProperserS ("TIENTES" TIENTES "CLIENTES" .construir(); } mapa privado <string, string> getVendorProperties (DataSource DataSource) {return jpaproperties.gethibernateProperties (dataSource); } @Bean (name = "TransActionManageReCondary") PlatformTransactionManager TransActionManagerSecundary (EntityManagerFactoryBuilder Builder) {return New JPatransActionManager (CustomerSEntityManagerFactory (Builder) .GetObject ()); }}importar org.springframework.data.jpa.repository.jparepository; importar org.springframework.data.jpa.repository.modifying; importar org.springframework.data.jpa.repository.query; import com.test.entity.manage.banner; Interfaz pública BannerRepository extiende jParepository <banner, long> {@modifying @Query ("Actualizar banner m set m.name =? 1 donde m.id =? 2") public void actualización (bannerName de cadena, ID long); } 1.5. : 对 对 @Primary 修饰的 LocalContainerEnTityManagerFactoryBean 可以不用指定 TransactionManager , Spring 上下文自动使用默认的 JPatransactionManager , 但是对于第二个或第三个等等必须指定 TransactionManager 。可以参考 Springboot 官方文档中的相关章节。
总结
以上所述是小编给大家介绍的 Boot de primavera Springjpa 支持多个数据源的实例代码 , 希望对大家有所帮助 如果大家有任何疑问请给我留言 , 小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!