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

如何建企业网站软文推广有哪些

如何建企业网站,软文推广有哪些,满洲里做网站,宁夏自治区建设厅官方网站1.spring webflux r2dbc 多数据源配置 项目中有时需要配置多个数据源,以下是一个简单配置使用,db1 作为默认数据源,可以使用spring JPA 查询,也可以配置dbclient, 执行自定义sql 查询,db2需要配置dbclient 使用。 配…

1.spring webflux + r2dbc 多数据源配置

项目中有时需要配置多个数据源,以下是一个简单配置使用,db1 作为默认数据源,可以使用spring JPA 查询,也可以配置dbclient, 执行自定义sql 查询,db2需要配置dbclient 使用。

配置文件

spring:r2dbc:db1:url: r2dbc:mysql://xxx.xxx.xxx.xxx/xxx_dbusername: xxpassword: *************db2:url: r2dbc:mysql://xxx.xxx.xxx.xxx/xxx_dbusername: xxxxxpassword: *******************

数据源设置

@Configuration
public class R2dbcConfig {@Bean@ConfigurationProperties(prefix = "spring.r2dbc.db1")public R2dbcProperties primaryR2dbcProperties() {return new R2dbcProperties();}@Bean@ConfigurationProperties(prefix = "spring.r2dbc.db2")public R2dbcProperties db2R2dbcProperties() {return new R2dbcProperties();}//默认为主数据源@Primary@Bean(name = "primaryConnectionFactory")public ConnectionFactory primaryConnectionFactory(@Qualifier("primaryR2dbcProperties") R2dbcProperties properties) {return createConnectionFactory(properties);}@Bean(name = "db2ConnectionFactory")public ConnectionFactory db2ConnectionFactory(@Qualifier("db2R2dbcProperties") R2dbcProperties properties) {return createConnectionFactory(properties);}private ConnectionFactory createConnectionFactory(R2dbcProperties properties) {return ConnectionFactories.get(ConnectionFactoryOptions.parse(properties.getUrl()).mutate().option(USER, properties.getUsername()).option(PASSWORD, properties.getPassword()).build());}@Primary@Bean(name = "primaryTransactionManager")public R2dbcTransactionManager primaryTransactionManager(@Qualifier("primaryConnectionFactory") ConnectionFactory connectionFactory) {return new R2dbcTransactionManager(connectionFactory);}@Bean(name = "db2TransactionManager")public R2dbcTransactionManager secondaryTransactionManager(@Qualifier("db2ConnectionFactory") ConnectionFactory connectionFactory) {return new R2dbcTransactionManager(connectionFactory);}@Primary@Bean("primaryDatabaseClient")public DatabaseClient mysqlDatabaseClient(@Qualifier("primaryConnectionFactory") ConnectionFactory connectionFactory) {return DatabaseClient.create(connectionFactory);}@Bean("db2DatabaseClient")public DatabaseClient db2DatabaseClient(@Qualifier("db2ConnectionFactory") ConnectionFactory connectionFactory) {return DatabaseClient.create(connectionFactory);}
}

Db2查询示例

@Service
@Slf4j
public class Db2QueryUtil {private static DatabaseClient dbClient;@Autowiredpublic Db2QueryUtil(@Qualifier(value ="db2DatabaseClient") DatabaseClient _dbClient) {dbClient = _dbClient;}public static <T> Flux<T> querMany(String sql, Class<T> aClass){return dbClient.sql(sql).map(row -> JSONObject.parseObject(row.toString(),aClass)).all().publishOn(Schedulers.boundedElastic());}}

2. JdbcTemplate 数据源配置

public class DataSourceConfig {private String dataSourceName;private String url;private String username;private String password;private String driver;
}@Component
public class DataSourceFactory {private final Map<String, JdbcTemplate> jdbcTemplateCache = new ConcurrentHashMap<>();private final Map<String, AtomicInteger> referenceCount = new ConcurrentHashMap<>();// 创建JdbcTemplatepublic synchronized  JdbcTemplate getJdbcTemplate(DataSourceConfig config) {String CacheKey = config.getDataSourceName();referenceCount.computeIfAbsent(CacheKey, k -> new AtomicInteger(0)).incrementAndGet();if(jdbcTemplateCache.containsKey(CacheKey)&&jdbcTemplateCache.get(CacheKey)!=null) {return jdbcTemplateCache.get(CacheKey);}else{HikariDataSource  dataSource = new HikariDataSource();dataSource.setJdbcUrl(config.getUrl());dataSource.setDriverClassName(config.getDriver());dataSource.setUsername(config.getUsername());dataSource.setPassword(config.getPassword());JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);jdbcTemplateCache.put(CacheKey, jdbcTemplate);return jdbcTemplate;}}//关闭连接:避免使用中连接关闭,使用了计数器;computeIfPresent 避免重复关闭public void close(DataSourceConfig config){String cacheKey = config.getDataSourceName();AtomicInteger count = referenceCount.get(cacheKey);if (count != null && count.decrementAndGet() == 0) {jdbcTemplateCache.computeIfPresent(cacheKey, (key, jdbcTemplate) -> {try {DataSource dataSource = jdbcTemplate.getDataSource();if (dataSource instanceof HikariDataSource) {((HikariDataSource) dataSource).close();log.info("Successfully closed HikariDataSource: {}",config.getDataSourceName());} else {log.warn("Data source {} is not a HikariDataSource and cannot be closed", config.getDataSourceName());}} catch (Exception e) {log.error("Error closing data source: {} ",config.getDataSourceName(), e);}return null; // 从缓存中移除});}}}@Service
@Slf4j
public class DataSourceService {@Autowiredprivate DataSourceFactory dataSourceFactory;private List<Map<String, Object>> executeQuery(DataSourceConfig config, String sql, Object... params) {JdbcTemplate jdbcTemplate = dataSourceFactory.getJdbcTemplate(config);try {return jdbcTemplate.queryForList(sql, params);} catch (DataAccessException e) {throw new RuntimeException("SQL执行失败: ", e);}finally {dataSourceFactory.close(config);}}}

JdbcTemplate 可以依据用户传入不同 DataSourceConfig,实现多数据源查询,注:需要引入相关数据源jar包。

http://www.dtcms.com/wzjs/508050.html

相关文章:

  • 网站后台模板网络营销的主要内容包括
  • 免费建站网站制作模板西安网页设计
  • bootstrap怎么做网站找资源的关键词有哪些
  • 做我的世界背景图的网站建设网站流程
  • 网站建设与管理学的是什么百度怎么投放广告
  • 网站怎么解析中国培训网是国家公认的吗
  • 深圳网站建设哪个公司好镇江关键字优化公司
  • ps做网站边框实时新闻
  • 电子政务网站建设ppt石家庄seo排名外包
  • 互助盘网站开发seo标题优化的方法
  • 自己怎么做商城网站视频教程汕头最好的seo外包
  • 沈阳seo团队北京谷歌seo
  • 企业网站制作公司合肥百度服务中心人工客服电话
  • 手机网站快速发布推广信息的网站
  • 做网站的公司利润互联网广告价格
  • 企业建站系统java南宁网站公司
  • 建站网站插件网站更换服务器对seo的影响
  • 商洛市城乡建设规划局网站西安网络推广运营公司
  • 做论坛网站需要多少钱软文营销文章案例
  • 自己做图片的网站链接搜索引擎网站排名优化方案
  • 做一个公司网站网络推广合作协议
  • 做网站主机几个配件长沙网站seo公司
  • 电商网站可以用dw做网站功能
  • wordpress评论邮件回复插件开鲁seo服务
  • 铁岭网站建设百度搜索广告投放
  • 网站一直维护意味着什么南宁最新消息今天
  • asp网站建设公司郑州seo服务技术
  • avada如何做像谷歌的网站济南网站万词优化
  • 用什么做淘宝客网站好seo网站优化课程
  • 建设网站哪家公司好广东seo推广