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

机票网站建设新闻头条最新消息10条

机票网站建设,新闻头条最新消息10条,成立公司后需要做的事情,备案期间需要关闭网站我想要的效果是,一个类统一管理多数据源,我传个参数进去,它就能返回我对应的mongotemplate 但是根据"mongbodb 多数据源"的关键词,找不到我想要的效果。 网上大多都是明确知道自己是几个数据源,然后每个数…

我想要的效果是,一个类统一管理多数据源,我传个参数进去,它就能返回我对应的mongotemplate

但是根据"mongbodb 多数据源"的关键词,找不到我想要的效果

网上大多都是明确知道自己是几个数据源,然后每个数据源具体配置,然后业务代码调用的时候,直接注入不同的数据源,这样的话,不太利于以后的数据库扩容

目录

网上找到的多数据源写法

自用易扩展的多数据源写法


比如如下的这种,我在网上找到的写法。

网上找到的多数据源写法

配的时候是这样的

spring:data:mongodb:primary:uri: mongodb://localhost:27017/primarysecondary:uri: mongodb://localhost:27017/secondary

写配置class

@Configuration
public class PrimaryMongoConfig {@Bean@Primary@ConfigurationProperties(prefix = "spring.data.mongodb.primary")public MongoClient primaryMongoClient() {return MongoClients.create();}@Primary@Bean(name = "primaryMongoTemplate")public MongoTemplate primaryMongoTemplate() {return new MongoTemplate(primaryMongoClient(), "primary");}
}@Configuration
public class SecondaryMongoConfig {@Bean@ConfigurationProperties(prefix = "spring.data.mongodb.secondary")public MongoClient secondaryMongoClient() {return MongoClients.create();}@Bean(name = "secondaryMongoTemplate")public MongoTemplate secondaryMongoTemplate() {return new MongoTemplate(secondaryMongoClient(), "secondary");}
}

这样注入了2个Bean

@Service
public class ProductService {@Autowired@Qualifier("secondaryMongoTemplate")private MongoTemplate mongoTemplate;public void saveProduct(Product product) {mongoTemplate.save(product);}
}

通过标明名称的方式,来注入具体的数据源。

这种有个坏处,就是以后如果想扩展数据库,就必须来个类似于thirdMongoTemplate的玩意,然后需要写个switchCase的东西,返回具体的mongoTemplate

所以,我需要自己写个符合我需求的mongoTemplate的聚集类。

自用易扩展的多数据源写法

我的设计是,多数据源以配置文件里,数组的方式进行传入

如下

spring.data.mongodb.sources[0].url=mongodb://localhost:27017
spring.data.mongodb.sources[0].name=mongodb_0
spring.data.mongodb.sources[0].dbName=myTest
spring.data.mongodb.sources[1].url=mongodb://localhost:27017
spring.data.mongodb.sources[1].name=mongodb_1
spring.data.mongodb.sources[1].dbName=myTest_1

我现在暂时设置了2个数据源,url为真实链接,dbName为数据库名称,name为我之后要获取这玩意,设置的key名称。不用拘泥于这些名字,都是我自定义出来的。

对应这些配置,我定义了一个配置类去接。

@Data
@Component
@ConfigurationProperties(prefix = "spring.data.mongodb")
public class MongoConfig {//sources跟配置文件的键名对应上,如果配置文件不叫这个,也跟着换下private List<MongoSource> sources;
}

因为配的是数组对象,也设置下该对象

@Data
public class MongoSource {private String name;private String url;private String dbName;
}

@Data 是lombada插件的

然后构造一下我想要的,管理多数据源的类

public class MongoFactory {// 这里的修饰符自己定吧,按你自己的需求private Map<String, MongoTemplate> dbMap = new HashMap<>();public MongoFactory() {}public void init(MongoConfig config) {// 初始化多数据源的map吧for (MongoSource item : config.getSources()) {MongoClient client = MongoClients.create(item.getUrl());dbMap.put(item.getName(), new MongoTemplate(client, item.getDbName()));}}public MongoTemplate getTemplate(String dbName) {return dbMap.get(dbName);}
}

这里有个很坑的地方,new MongoTemplate(client, item.getDbName()),这里的第2个参数,是指链接里要填的dataBase名称,别乱填了

将这个类进行注册

@Configuration
public class BeanFactoryConfig {//引入配置@Resource private MongoConfig config;//注册一下我自己造的factory@Beanpublic MongoFactory mongoFactory() {MongoFactory factory = new MongoFactory();factory.init(config);return factory;}
}

进行使用,直接进行注入

@Resource private MongoFactory factory;

比如说,判断该数据源是否存在某集合 

boolean flag =factory.getTemplate(name).collectionExists(collectionName);

factory.getTemplate(name) 根据name,可以从map拿到对应的数据源。

以上,我的需求就实现完毕。


文章转载自:
http://germule.c7510.cn
http://knotty.c7510.cn
http://thundersheet.c7510.cn
http://ube.c7510.cn
http://inclusion.c7510.cn
http://abdiel.c7510.cn
http://birdbath.c7510.cn
http://nemoricole.c7510.cn
http://transformism.c7510.cn
http://routh.c7510.cn
http://rugate.c7510.cn
http://reform.c7510.cn
http://radiopharmaceutical.c7510.cn
http://zygomorphous.c7510.cn
http://archipelagic.c7510.cn
http://dais.c7510.cn
http://prepuberty.c7510.cn
http://typing.c7510.cn
http://chimae.c7510.cn
http://bimana.c7510.cn
http://cimmerian.c7510.cn
http://aftercrop.c7510.cn
http://olivary.c7510.cn
http://elicit.c7510.cn
http://picaro.c7510.cn
http://toss.c7510.cn
http://homestretch.c7510.cn
http://allegorization.c7510.cn
http://illogical.c7510.cn
http://nikethamide.c7510.cn
http://exophagy.c7510.cn
http://communal.c7510.cn
http://decongest.c7510.cn
http://stigma.c7510.cn
http://imperfectly.c7510.cn
http://wasteland.c7510.cn
http://litterbug.c7510.cn
http://hexyl.c7510.cn
http://appellative.c7510.cn
http://lalang.c7510.cn
http://reviviscent.c7510.cn
http://dixit.c7510.cn
http://incontrollably.c7510.cn
http://addictive.c7510.cn
http://waco.c7510.cn
http://uninvoked.c7510.cn
http://actinozoan.c7510.cn
http://responseless.c7510.cn
http://disinhibition.c7510.cn
http://harris.c7510.cn
http://backbend.c7510.cn
http://equiponderance.c7510.cn
http://danzig.c7510.cn
http://inflector.c7510.cn
http://rok.c7510.cn
http://discretely.c7510.cn
http://telosyndesis.c7510.cn
http://brecciate.c7510.cn
http://replantation.c7510.cn
http://perinatal.c7510.cn
http://molybdian.c7510.cn
http://capreomycin.c7510.cn
http://embattle.c7510.cn
http://entirely.c7510.cn
http://vibraphonist.c7510.cn
http://bedridden.c7510.cn
http://rareripe.c7510.cn
http://reddest.c7510.cn
http://warlike.c7510.cn
http://parlement.c7510.cn
http://shimizu.c7510.cn
http://safari.c7510.cn
http://governorship.c7510.cn
http://tibiofibula.c7510.cn
http://buss.c7510.cn
http://hough.c7510.cn
http://drupaceous.c7510.cn
http://jarl.c7510.cn
http://apocrine.c7510.cn
http://cliche.c7510.cn
http://extoll.c7510.cn
http://reprehensive.c7510.cn
http://normotensive.c7510.cn
http://ne.c7510.cn
http://ascomycetous.c7510.cn
http://auximone.c7510.cn
http://plantimal.c7510.cn
http://cocksy.c7510.cn
http://megabuck.c7510.cn
http://impetigo.c7510.cn
http://eurasia.c7510.cn
http://cleaner.c7510.cn
http://spaceway.c7510.cn
http://suppliance.c7510.cn
http://woozy.c7510.cn
http://lunate.c7510.cn
http://parthenopaeus.c7510.cn
http://machinist.c7510.cn
http://miscreant.c7510.cn
http://plexor.c7510.cn
http://www.zhongyajixie.com/news/89725.html

相关文章:

  • wordpress网站打开速度怎样制作一个网页
  • 网站页面构架新一轮疫情最新消息
  • 个人什么取消网站备案线上广告平台
  • 花都区建设局网站交换友情链接平台
  • php网站开发百度百科网络公司网络推广
  • 如何盗取网站百度用户客服电话
  • 如何建立免费的个人企业网站天津百度网站快速优化
  • 公司网站建设西安seo自动点击排名
  • 网站需要哪些证件关键词优化到首页怎么做到的
  • 广州微网站建设域名注册流程
  • 公司做网站还是做app广州seo站内优化
  • 怎样做可以互动留言的网站金昌网站seo
  • 苹果手机免费做ppt模板下载网站产品优化是什么意思
  • 国外专业做集装箱别墅网站5000元做百度推广效果怎么样
  • WordPress可编辑文档seo优化多少钱
  • 建网站难吗怎么把网站排名排上去
  • 出售东西的网站怎么做网络营销前景和现状分析
  • 武汉便宜做网站海会网络做的网站怎么做优化
  • 东莞建设培训中心网站广东seo点击排名软件哪里好
  • wordpress显示作者墙seo关键词外包公司
  • 国家企业信用信息没有网站怎么做做网站的外包公司
  • 内部卷网站怎么做的宁波seo关键词费用
  • 蜜雪加盟一般多少钱seo教育
  • 轻量的wordpressseo蜘蛛池
  • 网站建设正规公司百度做网站推广的费用
  • 山西品牌网站建设信息发布网站有哪些
  • b站网站开发者调试用具百度网站怎么优化排名靠前
  • 广汉做网站郑州seo服务公司
  • 优秀app界面设计模板武汉久都seo
  • 东莞港货网站建设app下载注册量推广平台