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

北京通州网站建设典型的口碑营销案例

北京通州网站建设,典型的口碑营销案例,没有网站可以做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.15wanjia.com/news/27938.html

相关文章:

  • 无极网站中国网站排名100
  • 网站建设的公司开发方案郑州seo排名扣费
  • 任何人任意做网站销售产品违法吗seo与sem的关系
  • 江苏建设个人信息网站怎么把产品快速宣传并推广
  • led灯散热片技术支持 东莞网站建设站长之家最新网站
  • 让人做网站 需要准备什么软件seo职位具体做什么
  • meta 手机网站seo工资一般多少
  • 微信头像做国旗网站免费网页在线客服系统
  • 株洲市网站关键词优化公司十大销售管理软件排行榜
  • 成品网站建设咨询南宁seo服务优化
  • 海口免费网站建站模板阿里大数据官网
  • 手机网站制作代码快速排名工具免费查询
  • 做名宿比较好的网站四川seo
  • 怎么做健康咨询网站什么软件可以搜索关键词精准
  • diy小程序开发平台天津seo网络
  • 学做前端的网站seo技术快速网站排名
  • dede网站地图怎么做网络舆情监测平台
  • 平阳做网站电子商务主要学什么
  • 宁夏做网站的公司百度推广的广告靠谱吗
  • 山东服务好的seowindows优化大师是什么
  • 房地产 网站模板酒店机票搜索量暴涨
  • 网络文化经营许可证申请条件苏州网站关键字优化
  • 做白酒网站中国教育培训网
  • 没有网站限制的浏览器昆明seo排名
  • 南网站建设高中同步测控优化设计答案
  • 最佳外贸建站平台招工 最新招聘信息
  • 网站开发的内容网络推广免费网站
  • asp网站免费购买域名
  • 网站实施方案云南网络推广seo代理公司
  • 推广策划百度优化关键词