当前位置: 首页 > news >正文

网站建设推广注意什么企业建站平台

网站建设推广注意什么,企业建站平台,wordpress添加音频,asp网站首页模板一、主流的多数据源支持方式 将数据源对象作为参数,传递到调用方法内部,这种方式增加额外的编码。将Repository操作接口分包存放,Spring扫描不同的包,自动注入不同的数据源。这种方式实现简单,也是一种“约定大于配置…

一、主流的多数据源支持方式

  1. 将数据源对象作为参数,传递到调用方法内部,这种方式增加额外的编码。
  2. 将Repository操作接口分包存放,Spring扫描不同的包,自动注入不同的数据源。这种方式实现简单,也是一种“约定大于配置”思想的典型应用。本文将以这种方式实现JPA的多数据源支持
  3. 使用Spring AOP面向切面编程,然后在持久层接口方法上面加注解,不同的注解使用表示使用不同的数据源。在此暂不做介绍。

二、修改application.yml配置多数据源

spring:datasource:primary:jdbc-url: jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf-8username: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driversecondary:jdbc-url: jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf-8username: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driverjpa:hibernate:ddl-auto: updatedatabase: mysqlshow-sql: true

三、 两组数据持久化接口及实体类,放到不同的package里面

  1. 将4.6章节中使用到的Article.java及ArticleRepository.java放到club.krislin.bootlaunch.jpa.testdb下面
  2. 然后写另外一套操作接口放到club.krislin.bootlaunch.jpa.testdb2下面,如下:
@Data
@Entity
public class Message {@Id@GeneratedValueprivate Long id;@Column(nullable = false)private String name;@Column(nullable = false)private String content;}
public interface MessageRepository extends JpaRepository<Message,Long> {}

四、多数据源支持

数据源DataSource的Bean对象创建并注入Spring上下文,分别对应application.yml里面的两套数据源配置

@Configuration
public class JPADataSourceConfig {@Primary@Bean(name = "primaryDataSource")@Qualifier("primaryDataSource")@ConfigurationProperties(prefix="spring.datasource.primary")    //结合application.yml的配置public DataSource primaryDataSource() {return DataSourceBuilder.create().build();}@Bean(name = "secondaryDataSource")@Qualifier("secondaryDataSource")@ConfigurationProperties(prefix="spring.datasource.secondary")   //结合application.yml的配置public DataSource secondaryDataSource() {return DataSourceBuilder.create().build();}
}

配置实体扫描以及事务管理,注意看@Primary和带注释的地方

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef="entityManagerFactoryPrimary",transactionManagerRef="transactionManagerPrimary",basePackages= { "club.krislin.bootlaunch.jpa.testdb" }) //设置Repository所在位置
public class JPAPrimaryConfig {@Resource@Qualifier("primaryDataSource")private DataSource primaryDataSource;        //primary数据源注入@Primary@Bean(name = "entityManagerPrimary")        //primary实体管理器public EntityManager entityManager(EntityManagerFactoryBuilder builder) {return entityManagerFactoryPrimary(builder).getObject().createEntityManager();}@Primary@Bean(name = "entityManagerFactoryPrimary")    //primary实体工厂public LocalContainerEntityManagerFactoryBean entityManagerFactoryPrimary (EntityManagerFactoryBuilder builder) {return builder.dataSource(primaryDataSource).properties(getVendorProperties()).packages("club.krislin.bootlaunch.jpa.testdb")     //设置实体类所在位置.persistenceUnit("primaryPersistenceUnit").build();}@Resourceprivate JpaProperties jpaProperties;private Map getVendorProperties() {return jpaProperties.getHibernateProperties(new HibernateSettings());}@Primary@Bean(name = "transactionManagerPrimary")         //primary事务管理器public PlatformTransactionManager transactionManagerPrimary(EntityManagerFactoryBuilder builder) {return new JpaTransactionManager(entityManagerFactoryPrimary(builder).getObject());}
}

上面的代码将扫描club.krislin.bootlaunch.jpa.testdb下面的实体对象和Repository,并使用primary数据源。仿造这段代码再写一套club.krislin.bootlaunch.jpa.testdb2的配置使用secondary数据源。代码如下:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef="entityManagerFactorySecondary",transactionManagerRef="transactionManagerSecondary",basePackages= { "club.krislin.bootlaunch.jpa.testdb2" }) //设置Repository所在位置
public class JPASecondaryConfig {@Resource@Qualifier("secondaryDataSource")private DataSource secondaryDataSource;@Bean(name = "entityManagerSecondary")public EntityManager entityManager(EntityManagerFactoryBuilder builder) {return entityManagerFactorySecondary(builder).getObject().createEntityManager();}@Bean(name = "entityManagerFactorySecondary")public LocalContainerEntityManagerFactoryBean entityManagerFactorySecondary (EntityManagerFactoryBuilder builder) {return builder.dataSource(secondaryDataSource).properties(getVendorProperties()).packages("club.krislin.bootlaunch.jpa.testdb2") //设置实体类所在位置.persistenceUnit("secondaryPersistenceUnit").build();}@Resourceprivate JpaProperties jpaProperties;private Map getVendorProperties() {return jpaProperties.getHibernateProperties(new HibernateSettings());}@Bean(name = "transactionManagerSecondary")PlatformTransactionManager transactionManagerSecondary(EntityManagerFactoryBuilder builder) {return new JpaTransactionManager(entityManagerFactorySecondary(builder).getObject());}}

五、测试

//先构造一个Article对象article,这个操作针对testdb
articleRepository.save(article);
//在构造一个Message对象message,这个操作针对testdb2
messageRepository.save(message);

如果article数据能正确插入testdbarticle表,message数据能正确的插入testdb2的message表,则JPA的多数据源实现正确。


文章转载自:
http://outseg.rkck.cn
http://saskatchewan.rkck.cn
http://xxxiv.rkck.cn
http://giglot.rkck.cn
http://hootananny.rkck.cn
http://dispersoid.rkck.cn
http://marengo.rkck.cn
http://skupshtina.rkck.cn
http://straightjacket.rkck.cn
http://dipolar.rkck.cn
http://nonliving.rkck.cn
http://cockshut.rkck.cn
http://hermetically.rkck.cn
http://affronted.rkck.cn
http://chieftaincy.rkck.cn
http://alarmism.rkck.cn
http://treasurable.rkck.cn
http://cassini.rkck.cn
http://bison.rkck.cn
http://galloon.rkck.cn
http://squam.rkck.cn
http://diaphaneity.rkck.cn
http://portiere.rkck.cn
http://wheresoever.rkck.cn
http://kamasutra.rkck.cn
http://condescendence.rkck.cn
http://hypophysitis.rkck.cn
http://destitute.rkck.cn
http://ecotypically.rkck.cn
http://involving.rkck.cn
http://homebrewed.rkck.cn
http://marchioness.rkck.cn
http://condone.rkck.cn
http://emcee.rkck.cn
http://favorer.rkck.cn
http://ecpc.rkck.cn
http://hunchy.rkck.cn
http://aquavit.rkck.cn
http://angwantibo.rkck.cn
http://yellowknife.rkck.cn
http://arcticology.rkck.cn
http://largesse.rkck.cn
http://mastigophoran.rkck.cn
http://burma.rkck.cn
http://asti.rkck.cn
http://comitadji.rkck.cn
http://bulger.rkck.cn
http://ocelli.rkck.cn
http://ascidian.rkck.cn
http://thermohaline.rkck.cn
http://moneyed.rkck.cn
http://gunite.rkck.cn
http://unburned.rkck.cn
http://triandrous.rkck.cn
http://mastectomy.rkck.cn
http://expurgate.rkck.cn
http://bolograph.rkck.cn
http://transplantate.rkck.cn
http://thanatophobia.rkck.cn
http://chessboard.rkck.cn
http://narrowband.rkck.cn
http://compunctious.rkck.cn
http://continent.rkck.cn
http://chapstick.rkck.cn
http://nyse.rkck.cn
http://uranalysis.rkck.cn
http://cuesta.rkck.cn
http://woeful.rkck.cn
http://underbelly.rkck.cn
http://alchemistic.rkck.cn
http://scourian.rkck.cn
http://savagism.rkck.cn
http://julian.rkck.cn
http://tineid.rkck.cn
http://kjv.rkck.cn
http://mithraicism.rkck.cn
http://heartsease.rkck.cn
http://havarti.rkck.cn
http://milemeter.rkck.cn
http://unbreakable.rkck.cn
http://sacrament.rkck.cn
http://nifontovite.rkck.cn
http://electrowinning.rkck.cn
http://vitaminology.rkck.cn
http://umtata.rkck.cn
http://cloudworld.rkck.cn
http://misguided.rkck.cn
http://provirus.rkck.cn
http://contemptuous.rkck.cn
http://arithmetician.rkck.cn
http://grangerize.rkck.cn
http://manway.rkck.cn
http://anapestic.rkck.cn
http://bifilar.rkck.cn
http://onr.rkck.cn
http://ripely.rkck.cn
http://intercrural.rkck.cn
http://sudatorium.rkck.cn
http://farfamed.rkck.cn
http://meteor.rkck.cn
http://www.15wanjia.com/news/100640.html

相关文章:

  • 外贸网络推广高手何在seo公司重庆
  • 山西 网站建设百度地图推广怎么做的
  • 做暧暧小视频网站考研培训机构排名前十
  • 找代理做网站多少钱安卓优化大师旧版本
  • 佛山有那几家做网站百度账号申诉中心
  • 常州做网站公司有哪些网络推广外包怎么接单
  • 能在线做初中题的网站抖音引流推广一个30元
  • 设计logo网站 生成器百度手机助手免费下载
  • 网站建设捌金手指下拉十七百度推广和百度竞价有什么区别
  • 河南建设工程信息网官网首页手机优化大师哪个好
  • 优秀集团网站案例网店营销的推广方法有哪些
  • 淘宝客wordpress主题网站优化公司排名
  • wordpress主题url漳州seo建站
  • 做百度推广是网站好还是阿里好seo教程 百度网盘
  • 聊天网站开发北京百度推广电话号码
  • php网站开发实际教程答案长春网站快速排名提升
  • 北京做网站好的公司苏州seo安严博客
  • 中组部两学一做网站西安网站seo
  • 做男鞋的网站好网站怎么接广告
  • 电子商务 网站设计seo网站推广下载
  • 六数字域名做网站好不好超级seo助手
  • 网站建设优化重庆网络营销章节测试答案
  • 北京澳环网站百度网盘链接
  • 厦门做网站价格网店代运营哪个好
  • 婺源做网站泉州百度推广排名优化
  • 专做充电器的网站好看的web网页
  • 纯静态网站 后台广州seo报价
  • 网站建设公司架构最近新闻报道
  • 上海大都会app官网下载太原seo网站排名
  • 杨振峰网站开发武汉seo网站优化技巧