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

创建手机网页/中国十大seo

创建手机网页,中国十大seo,永济网站建设,网站买了服务器后该怎么做要想在同一个springboot项目中使用多个数据源,最主要是每个数据源都有自己的mongoTemplate和MongoDbFactory。mongoTemplate和MongoDbFactory是负责对数据源进行交互的并管理链接的。 spring提供了一个注解EnableMongoRepositories 用来注释在某些路径下的MongoRepo…

       要想在同一个springboot项目中使用多个数据源,最主要是每个数据源都有自己的mongoTemplate和MongoDbFactory。mongoTemplate和MongoDbFactory是负责对数据源进行交互的并管理链接的。

       spring提供了一个注解@EnableMongoRepositories 用来注释在某些路径下的MongoRepositor实现类使用哪个MongoTemplate实例。当然如果我们是直接使用MongoTemplate操作,那么只需要使用于数据库对应的MongoTemplate即可。

代码结果如下:

首先实现两个config,实现对MongoTemplate和MongoDbFactory的配置

  • mongoTemplate1和mongoDbFactory1:并使用@EnableMongoRepositories指定在“com.zhong.springdemo.mangodbdome.mongodb1”目录下的MongoRepositor使用这些配置。
@Configuration
//指定com.zhong.springdemo.mangodbdome.mongodb1路径下的MongoRepository使用 容器中的  mongoTemplate1实例
@EnableMongoRepositories(mongoTemplateRef = "mongoTemplate1",basePackages = {"com.zhong.springdemo.mangodbdome.mongodb1"})
public class MongoDbConfigure {@AutowiredMongoDbFactoryProperties mongoDbFactoryProperties;/*** 自定义 mongoTemplate 实现多数据源配置*/@Bean("mongoTemplate1")public MongoTemplate mongoTemplate(MongoDbFactory mongoDbFactory1, MongoMappingContext context){MappingMongoConverter mappingMongoConverter = mappingMongoConverter(mongoDbFactory1, context);MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory1, mappingMongoConverter);return mongoTemplate;}/*** 自定义mongo连接池* @param properties 私有配置* @return*/@Bean("mongoDbFactory1")public MongoDbFactory mongoDbFactory(MongoDbProperties properties) {//创建客户端参数MongoClientOptions options = mongoClientOptions(properties);//解析地址List<ServerAddress> serverAddresses = new ArrayList<>();for (String address : properties.getAddress().split(",")) {String[] hostAndPort = address.split(":");String host = hostAndPort[0];Integer port = Integer.parseInt(hostAndPort[1]);ServerAddress serverAddress = new ServerAddress(host, port);serverAddresses.add(serverAddress);}//创建认证客户端MongoCredential mongoCredential = MongoCredential.createScramSha1Credential(properties.getUsername(),properties.getAuthenticationDatabase() != null ? properties.getAuthenticationDatabase() : properties.getDatabase(),properties.getPassword().toCharArray());MongoClient mongoClient = new MongoClient(serverAddresses.get(0), mongoCredential, options);//集群模式if (serverAddresses.size() > 1) {mongoClient = new MongoClient(serverAddresses, mongoCredential, null);}/** 创建非认证客户端*///MongoClient mongoClient = new MongoClient(serverAddresses, mongoClientOptions);return new SimpleMongoDbFactory(mongoClient, properties.getDatabase());}/*** mongo客户端参数配置* @return*/private MongoClientOptions mongoClientOptions(MongoDbProperties properties) {MongoDbFactoryProperties factoryProperties = this.mongoDbFactoryProperties;return MongoClientOptions.builder().connectTimeout(factoryProperties.getConnectionTimeoutMs()).socketTimeout(factoryProperties.getReadTimeoutMs()).applicationName(factoryProperties.getApplicationName()).heartbeatConnectTimeout(factoryProperties.getHeartbeatConnectionTimeoutMs()).heartbeatSocketTimeout(factoryProperties.getHeartbeatReadTimeoutMs()).heartbeatFrequency(factoryProperties.getHeartbeatFrequencyMs()).minHeartbeatFrequency(factoryProperties.getMinHeartbeatFrequencyMs()).maxConnectionIdleTime(factoryProperties.getConnectionMaxIdleTimeMs()).maxConnectionLifeTime(factoryProperties.getConnectionMaxLifeTimeMs()).maxWaitTime(factoryProperties.getPoolMaxWaitTimeMs()).connectionsPerHost(factoryProperties.getConnectionsPerHost()).threadsAllowedToBlockForConnectionMultiplier(factoryProperties.getThreadsAllowedToBlockForConnectionMultiplier()).minConnectionsPerHost(factoryProperties.getMinConnectionsPerHost()).build();}/*** monogo 转换器* @return*/private MappingMongoConverter mappingMongoConverter(MongoDbFactory mongoDbFactory1, MongoMappingContext context) {DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoDbFactory1);MappingMongoConverter mappingConverter = new MappingMongoConverter(dbRefResolver, context);//此处是去除插入数据库的 _class 字段mappingConverter.setTypeMapper(new DefaultMongoTypeMapper(null));return mappingConverter;}
}
  • mongoTemplate2和mongoDbFactory2:并使用@EnableMongoRepositories指定在“com.zhong.springdemo.mangodbdome.mongodb2”目录下的MongoRepositor使用这些配置。
@Configuration
//指定com.zhong.springdemo.mangodbdome.mongodb2路径下的MongoRepository使用 容器中的  mongoTemplate2实例
@EnableMongoRepositories(mongoTemplateRef = "mongoTemplate2",basePackages = {"com.zhong.springdemo.mangodbdome.mongodb2"})
public class MongoDbConfigure2 {@AutowiredMongoDbFactoryProperties mongoDbFactoryProperties;/*** 自定义 mongoTemplate 实现多数据源配置*/@Bean("mongoTemplate2")public MongoTemplate mongoTemplate(MongoDbFactory mongoDbFactory2, MongoMappingContext context){MappingMongoConverter mappingMongoConverter = mappingMongoConverter(mongoDbFactory2, context);MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory2, mappingMongoConverter);return mongoTemplate;}/*** 自定义mongo连接池* @param properties 私有配置* @return*/@Bean("mongoDbFactory2")public MongoDbFactory mongoDbFactory2(MongoDbProperties2 properties) {//创建客户端参数MongoClientOptions options = mongoClientOptions(properties);//解析地址List<ServerAddress> serverAddresses = new ArrayList<>();for (String address : properties.getAddress().split(",")) {String[] hostAndPort = address.split(":");String host = hostAndPort[0];Integer port = Integer.parseInt(hostAndPort[1]);ServerAddress serverAddress = new ServerAddress(host, port);serverAddresses.add(serverAddress);}//创建认证客户端MongoCredential mongoCredential = MongoCredential.createScramSha1Credential(properties.getUsername(),properties.getAuthenticationDatabase() != null ? properties.getAuthenticationDatabase() : properties.getDatabase(),properties.getPassword().toCharArray());MongoClient mongoClient = new MongoClient(serverAddresses.get(0), mongoCredential, options);//集群模式if (serverAddresses.size() > 1) {mongoClient = new MongoClient(serverAddresses, mongoCredential, null);}/** 创建非认证客户端*///MongoClient mongoClient = new MongoClient(serverAddresses, mongoClientOptions);return new SimpleMongoDbFactory(mongoClient, properties.getDatabase());}/*** mongo客户端参数配置* @return*/private MongoClientOptions mongoClientOptions(MongoDbProperties2 properties) {MongoDbFactoryProperties factoryProperties = this.mongoDbFactoryProperties;return MongoClientOptions.builder().connectTimeout(factoryProperties.getConnectionTimeoutMs()).socketTimeout(factoryProperties.getReadTimeoutMs()).applicationName(factoryProperties.getApplicationName()).heartbeatConnectTimeout(factoryProperties.getHeartbeatConnectionTimeoutMs()).heartbeatSocketTimeout(factoryProperties.getHeartbeatReadTimeoutMs()).heartbeatFrequency(factoryProperties.getHeartbeatFrequencyMs()).minHeartbeatFrequency(factoryProperties.getMinHeartbeatFrequencyMs()).maxConnectionIdleTime(factoryProperties.getConnectionMaxIdleTimeMs()).maxConnectionLifeTime(factoryProperties.getConnectionMaxLifeTimeMs()).maxWaitTime(factoryProperties.getPoolMaxWaitTimeMs()).connectionsPerHost(factoryProperties.getConnectionsPerHost()).threadsAllowedToBlockForConnectionMultiplier(factoryProperties.getThreadsAllowedToBlockForConnectionMultiplier()).minConnectionsPerHost(factoryProperties.getMinConnectionsPerHost()).build();}/*** monogo 转换器* @return*/private MappingMongoConverter mappingMongoConverter(MongoDbFactory factory, MongoMappingContext context) {DbRefResolver dbRefResolver = new DefaultDbRefResolver(factory);MappingMongoConverter mappingConverter = new MappingMongoConverter(dbRefResolver, context);//此处是去除插入数据库的 _class 字段mappingConverter.setTypeMapper(new DefaultMongoTypeMapper(null));return mappingConverter;}
}
  • Repository实现

实现mongdb1下的repository---UserInfoTestRepository,UserInfoTestRepository使用的是mongoTemplate2和mongoDbFactory2

@Repository
public interface UserInfoTestRepository extends MongoRepository<UserInfoEntity, String> {List<UserInfoEntity> findByUserNameLike(String username);List<UserInfoEntity> findByUserName(String username);
}

实现mongdb2下的repository---UserInfRepository, UserInfRepository使用的是mongoTemplate1和mongoDbFactory1

@Repository
public interface UserInfoRepository extends MongoRepository<UserInfoEntity, String> {List<UserInfoEntity> findByUserNameLike(String username);List<UserInfoEntity> findByUserName(String username);
}
  •  实现service

使用Repository实现的访问的service

@Service
public class UserInfoServiceImpl implements UserInfoService {@Autowiredprivate UserInfoRepository userInfoRepository;@Autowiredprivate UserInfoTestRepository userInfoTestRepository;@Overridepublic List<UserInfoEntity> findByUserName(String userName){return userInfoRepository.findByUserName(userName);}@Overridepublic int saveTestUser(List<UserInfoDto> userInfoDtos) {List<UserInfoEntity> userInfoEntities = Lists.newArrayList();for(UserInfoDto userInfoDto : userInfoDtos){UserInfoEntity userInfoEntity = new UserInfoEntity();BeanUtils.copyProperties(userInfoDto, userInfoEntity);userInfoEntities.add(userInfoEntity);}userInfoTestRepository.saveAll(userInfoEntities);return userInfoEntities.size();}@Overridepublic int saveUser(List<UserInfoDto> userInfoDtos) {List<UserInfoEntity> userInfoEntities = Lists.newArrayList();for(UserInfoDto userInfoDto : userInfoDtos){UserInfoEntity userInfoEntity = new UserInfoEntity();BeanUtils.copyProperties(userInfoDto, userInfoEntity);userInfoEntities.add(userInfoEntity);}userInfoRepository.saveAll(userInfoEntities);return userInfoEntities.size();}
}

使用MongoTemplate实现的访问的service

@Service
public class UserInfoMongoTemplateServiceImpl implements UserInfoMongoTemplateService {@AutowiredMongoTemplate mongoTemplate1;@AutowiredMongoTemplate mongoTemplate2;@Overridepublic List<UserInfoEntity> findByUserName(String userName){Criteria criteria = Criteria.where("user_name").is(userName);return mongoTemplate1.find(getQueryFilter(criteria), UserInfoEntity.class);}@Overridepublic int saveTestUser(List<UserInfoDto> userInfoDtos) {List<UserInfoEntity> userInfoEntities = Lists.newArrayList();for(UserInfoDto userInfoDto : userInfoDtos){UserInfoEntity userInfoEntity = new UserInfoEntity();BeanUtils.copyProperties(userInfoDto, userInfoEntity);userInfoEntities.add(userInfoEntity);}mongoTemplate1.insert(userInfoEntities, UserInfoEntity.class);return userInfoEntities.size();}@Overridepublic int saveUser(List<UserInfoDto> userInfoDtos) {List<UserInfoEntity> userInfoEntities = Lists.newArrayList();for(UserInfoDto userInfoDto : userInfoDtos){UserInfoEntity userInfoEntity = new UserInfoEntity();BeanUtils.copyProperties(userInfoDto, userInfoEntity);userInfoEntities.add(userInfoEntity);}mongoTemplate2.insert(userInfoEntities, UserInfoEntity.class);return userInfoEntities.size();}private Query getQueryFilter(Criteria criteria, String  ...parms) {criteria = criteria == null ? new Criteria() : criteria;Query query = new Query();query.addCriteria(criteria);if(parms != null && parms.length > 0){Field fields = query.fields();for(String parm : parms){fields.include(parm);}}return query;}
}

 两个数据源信息配置properties.yaml:

zhong:#自定义的mongodb测试data:mongodb:database: zhong-mongopassword: 123456address: 127.0.0.1:27017username: adminauthenticationDatabase: adminmongodb2:database: test-mongopassword: 123456address: 127.0.0.1:27017username: adminauthenticationDatabase: admin

测试类:

@Component
public class MongoStartTest implements CommandLineRunner {@AutowiredUserInfoService userInfoService;@AutowiredUserInfoMongoTemplateService userInfoMongoTemplateService;@Overridepublic void run(String... args) throws Exception {for(int i = 0; i < 25; i++){UserInfoDto userInfoDto = new UserInfoDto();userInfoDto.setUserId(UUID.randomUUID().toString().replace("-", ""));userInfoDto.setUserName("用户名" + i);userInfoDto.setAuthor("登录名" + i);userInfoDto.setPwd("123456" + i);userInfoDto.setCreateTime(new Date());userInfoService.saveTestUser(Lists.newArrayList(userInfoDto));userInfoService.saveUser(Lists.newArrayList(userInfoDto));}for(int i = 100; i < 125; i++){UserInfoDto userInfoDto = new UserInfoDto();userInfoDto.setUserId(UUID.randomUUID().toString().replace("-", ""));userInfoDto.setUserName("用户名" + i);userInfoDto.setAuthor("登录名" + i);userInfoDto.setPwd("123456" + i);userInfoDto.setCreateTime(new Date());userInfoMongoTemplateService.saveTestUser(Lists.newArrayList(userInfoDto));userInfoMongoTemplateService.saveUser(Lists.newArrayList(userInfoDto));}userInfoService.findByUserName("用户名");userInfoMongoTemplateService.findByUserName("用户名");}
}

结果如图:

数据的确被插入到不同的库中了

参考:

http://www.voidcn.com/article/p-zqjtjvhm-bvu.html

http://www.whsansanxincailiao.cn/news/30719352.html

相关文章:

  • 遵义 网站建设/国内免费建网站
  • 宁夏网站设计/手机网站百度关键词排名查询
  • 在线设计平台优缺点/南京seo建站
  • 广州做响应式网站/永久免费二级域名申请
  • 苏州企业网站建设定制/销售渠道
  • 网吧设计装饰公司/宁波seo排名外包
  • 国外外贸论坛/seo草根博客
  • 建设网站com/深圳网站优化哪家好
  • 创业平台网站/seo在哪学
  • 做网站前期框架图/临沂色度广告有限公司
  • 政府网站建设集约化服务器/今天《新闻联播》回放
  • 做软装的网站/营销型网站建设总结
  • 维护一个网站难吗/超级seo外链
  • 公司网站自己可以做吗/上海搜索优化推广哪家强
  • 三河市网站建设/360网站推广
  • 龙岗英文网站制作/网址缩短在线生成器
  • 做网站的日历图片/整站优化的公司
  • 咸阳专业网站建设/推广网站有效的免费方法
  • 设计方案ppt模板/seo哪家好
  • 荔湾区建网站公司/微信引流用什么软件好用
  • 如何做企业交易网站/旅行网站排名前十名
  • asp 免费网站模板/关键词在线试听免费
  • 做外贸批发的网站有哪些/郑州seo优化
  • 广东手机网站建设费用/互动营销案例都有哪些
  • 茂名模板建站定制网站/网络营销的策略
  • 东莞网站建设类岗位/极速建站网站模板
  • 威客网站设计/对网站进行seo优化
  • dw2020网页设计教程/广告优化师的工作内容
  • 网站建设中的主要功能/电商网站运营
  • 旅游做攻略用什么网站/全国疫情排行榜