最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

spring boot springjpa 支持多個數(shù)據(jù)源的實例代碼

 更新時間:2018年04月18日 16:00:24   作者:ba5189tsl  
這篇文章主要介紹了spring boot springjpa 支持多個數(shù)據(jù)源的實例代碼,需要的朋友可以參考下

1.SpringBoot的程序啟動類

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 
//@EnableJpaRepositories(basePackages = "com.sonychina.backend.repository") 
public class Application extends 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(SpringApplicationBuilder application) { 
    return application.sources(Application.class); 
  } 
} 

 2.雙數(shù)據(jù)源配置類

import 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}) 
public class GlobalDataConfiguration { 
// @Autowired 
// private DBConfig dbConfig; 
  @Autowired 
  private JpaProperties jpaProperties; 
  @Bean(name="primaryDataSource") 
  @Primary 
  @ConfigurationProperties(prefix="datasource.primary") 
  public DataSource primaryDataSource() { 
    System.out.println("-------------------- primaryDataSource 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 
// public EntityManager entityManager(EntityManagerFactoryBuilder builder) { 
//   return customerEntityManagerFactory(builder).getObject().createEntityManager(); 
// } 
  @Bean(name="entityManagerFactoryPrimary") 
  @Primary 
  public LocalContainerEntityManagerFactoryBean customerEntityManagerFactory(EntityManagerFactoryBuilder builder) { 
    return builder.dataSource(primaryDataSource()) 
          .properties(getVendorProperties(primaryDataSource())) 
          .packages(SysUser.class) 
          .persistenceUnit("system") 
          .build(); 
  } 
  private Map<String, String> getVendorProperties(DataSource dataSource) { 
    return jpaProperties.getHibernateProperties(dataSource); 
  } 
} 

3.第二個jpa實體管理器

import 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="entityManagerFactorySecondary", 
  transactionManagerRef="transactionManagerSecondary", 
  basePackageClasses= {BannerRepository.class}) 
public class SecondEMFBConfig { 
  @Autowired 
  private JpaProperties jpaProperties; 
  @Autowired@Qualifier("secondaryDataSource") 
  private DataSource dataSource; 
// @Bean(name = "entityManagerPrimary") 
// @Primary 
// public EntityManager entityManager(EntityManagerFactoryBuilder builder) { 
//   return customerEntityManagerFactory(builder).getObject().createEntityManager(); 
// } 
  @Bean(name="entityManagerFactorySecondary") 
  public LocalContainerEntityManagerFactoryBean customerEntityManagerFactory(EntityManagerFactoryBuilder builder) { 
    return builder.dataSource(dataSource) 
          .properties(getVendorProperties(dataSource)) 
          .packages(Banner.class) 
          .persistenceUnit("customers") 
          .build(); 
  } 
  private Map<String, String> getVendorProperties(DataSource dataSource) { 
    return jpaProperties.getHibernateProperties(dataSource); 
  } 
  @Bean(name = "transactionManagerSecondary") 
  PlatformTransactionManager transactionManagerSecondary(EntityManagerFactoryBuilder builder) { 
    return new JpaTransactionManager(customerEntityManagerFactory(builder).getObject()); 
  } 
} 

4.repository類舉例

import org.springframework.data.jpa.repository.JpaRepository; 
import org.springframework.data.jpa.repository.Modifying; 
import org.springframework.data.jpa.repository.Query; 
import com.test.entity.manage.Banner; 
public interface BannerRepository extends JpaRepository<Banner, Long> { 
  @Modifying 
  @Query("update Banner m set m.name=?1 where m.id=?2") 
  public void update(String bannerName, Long id); 
} 

1.5.注意:對@Primary修飾的LocalContainerEntityManagerFactoryBean可以不用指定TransactionManager,spring上下文自動使用默認的JpaTransactionManager,但是對于第二個或第三個等等必須指定TransactionManager??梢詤⒖約pringboot官方文檔中的相關章節(jié)。 

總結

以上所述是小編給大家介紹的spring boot springjpa 支持多個數(shù)據(jù)源的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關文章

  • Mybatis中的resultType和resultMap使用

    Mybatis中的resultType和resultMap使用

    這篇文章主要介紹了Mybatis中的resultType和resultMap使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • Java 解析Markdown文檔格式的兩種方式

    Java 解析Markdown文檔格式的兩種方式

    CommonMark和Flexmark是兩種用于解析Markdown文檔的Java庫,CommonMark提供了一種簡潔和一致的Markdown格式語法規(guī)范,但不支持目錄解析,而Flexmark是一個基于CommonMark的擴展庫,不僅遵循了CommonMark規(guī)范,還提供了更多靈活的API和擴展功能
    2024-10-10
  • 使用maven的profile構建不同環(huán)境配置的方法

    使用maven的profile構建不同環(huán)境配置的方法

    這篇文章主要介紹了使用maven的profile構建不同環(huán)境配置的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • mybatis-puls中的resultMap數(shù)據(jù)映射

    mybatis-puls中的resultMap數(shù)據(jù)映射

    這篇文章主要介紹了mybatis-puls中的resultMap數(shù)據(jù)映射,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • java實現(xiàn)遞歸文件列表的方法

    java實現(xiàn)遞歸文件列表的方法

    這篇文章主要介紹了java實現(xiàn)遞歸文件列表的方法,實例分析了java采用遞歸算法遍歷文件的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • Java實現(xiàn)電影院訂票系統(tǒng)代碼

    Java實現(xiàn)電影院訂票系統(tǒng)代碼

    這篇文章主要介紹了Java實現(xiàn)電影院訂票系統(tǒng)代碼,代碼實現(xiàn)了界面類登錄注冊類,用戶類等,具有一定參考價值,需要的朋友可以參考下。
    2017-11-11
  • java8根據(jù)某一屬性過濾去重的實例

    java8根據(jù)某一屬性過濾去重的實例

    這篇文章主要介紹了java8根據(jù)某一屬性過濾去重的實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • SpringBoot中間件封裝限流器的方案詳解

    SpringBoot中間件封裝限流器的方案詳解

    這篇文章主要介紹了SpringBoot中間件封裝限流器,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • springboot中validator數(shù)據(jù)校驗功能的實現(xiàn)

    springboot中validator數(shù)據(jù)校驗功能的實現(xiàn)

    這篇文章主要介紹了springboot中validator數(shù)據(jù)校驗功能,校驗分為普通校驗和分組校驗,每種校驗方式通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2021-10-10
  • Java(基于Struts2) 分頁實現(xiàn)代碼

    Java(基于Struts2) 分頁實現(xiàn)代碼

    這篇文章介紹了Java(基于Struts2) 分頁實現(xiàn)代碼,有需要的朋友可以參考一下
    2013-10-10

最新評論

封丘县| 盘山县| 襄樊市| 左权县| 政和县| 织金县| 孟连| 神农架林区| 盘山县| 浮梁县| 九龙县| 古浪县| 珲春市| 阿拉善左旗| 荔浦县| 平原县| 吉林省| 文水县| 富平县| 尼玛县| 门源| 乌兰浩特市| 南开区| 仁怀市| 洞口县| 溧水县| 多伦县| 迭部县| 罗甸县| 临颍县| 苏州市| 丘北县| 古浪县| 长沙市| 大埔区| 昆明市| 大洼县| 扶风县| 全州县| 航空| 古丈县|