当前位置: 首页 > 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/804460.html

相关文章:

  • 用linux系统怎么自己建设网站网络销售公司
  • 网站开发人员招聘要求做网站设计的广告公司
  • 郑州最新政策济宁优化公司
  • 网站ip地址范围戏曲网站建设的可行性分析
  • 金融网站模版下载前端需要学什么语言
  • 合肥公司做网站个人做外包网站多少钱
  • 定西兰州网站建设智慧团建电脑版登录入口官网
  • 网站建设制作、微信公众号自行创建网站的平台
  • 都芳漆中文网站建设合肥建设厅官方网站
  • 中铁建设集团有几个局济南官网seo技术厂家
  • 盐城网站制作wordpress用微博sdk
  • 惠州做棋牌网站建设金融投资网站开发
  • 无极网站维护php网站怎么做的
  • 网站模块删除企业网站建设需要多少钱
  • 手机搭建网站教程打电话叫人做网站
  • 网站管理建设落实报告邢台网站建设58
  • 儿童网站html模板如何免费建造网站
  • 网站开发部门工资入什么科目桂林象鼻山介绍
  • python网站开发好吗抖音代运营朋友圈宣传文案
  • 如何做一网站创造网站
  • 唐山网站定制seo的宗旨是什么
  • 常州网站排名提升室内装修设计师怎么找
  • 微网站建设方式建设企业功能型网站
  • 大连市建设学校网站网站如何做分享
  • 网站备案主体变更杭州余杭网站建设
  • 猪八戒网做网站如何付款营销型网站建设 课程
  • 网站建设改革情况汇报徐州seo顾问
  • wordpress 企业网站 教程谁有哪种浏览器网站免费的
  • 企业网站psd模板网站建设自助建站制作
  • 域名可以绑定几个网站长春做网站建设的公司