Springboot应用开发:配置类整理

目录

编写目的

一、线程池

1.1 setCorePoolSize

1.2 setMaxPoolSize

1.3 setQueueCapacity

1.4 setKeepAliveSeconds

1.5 setThreadNamePrefix

1.6 setRejectedExecutionHandler

1.7 示例代码

二、Durid数据库连接池

2.1 ServletRegistrationBean

2.2 FilterRegistrationBean

2.3 示例代码

三、Redis

3.1 setKeySerializer

3.2 setValueSerializer

3.3 setHashKeySerializer

3.4 setHashValueSerializer

3.5 示例代码


Welcome to Code Block's blog

本篇文章主要介绍了

[SpringBoot应用开发:配置类整理]
❤博主广交技术好友,喜欢文章的可以关注一下❤

编写目的

        在使用SpringBoot进行应用开发中,通常需要编写很多的配置类,这些配置类在很大程度上提高了应用的开发速度.其中就包括线程池、数据库连接池、缓存的相关配置类。在这里我将经常用到的配置类进行整理和总结。

一、线程池

        线程池用于优化异步任务的执行速度、并发处理能力.控制线程数量,避免资源过度消耗.通过设置线程前缀可以提高日志的可读性.

1.1 setCorePoolSize

        指定线程中保持活跃的线程数量,即使线程空闲,核心线程也会存活(可通过allowCoreThreadTimeOut设置为true进行更改)

1.2 setMaxPoolSize


        指定线程池中线程的最大数量,在核心线程数满时,会创建新线程,直到到达maxPoolSize为止.

1.3 setQueueCapacity


        指定队列数量,在任务超过核心线程数量时,会被放到该队列中,在该队列满后会创建新的线程.

1.4 setKeepAliveSeconds

        设置线程的超时时间,线程空闲超过该时间后线程会被销毁.

1.5 setThreadNamePrefix

        设置线程前缀,该前缀可方便在线程调试和日志中进行查看.

1.6 setRejectedExecutionHandler

        设置线程的拒绝策略,如CallerRunsPolicy:当线程执行失败时,由发起调用的线程执行失败的任务.

1.7 示例代码

import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.task.TaskExecutor;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;/*** 线程池相关配置*/
@Configuration
public class AsyncConfig {@Beanpublic TaskExecutor executor(){ThreadPoolTaskExecutor executor=new ThreadPoolTaskExecutor();executor.setCorePoolSize(10);//核心线程数executor.setMaxPoolSize(50);  //最大线程数executor.setQueueCapacity(1000); //队列大小executor.setKeepAliveSeconds(300); //线程最大空闲时间executor.setThreadNamePrefix("fsx-Executor-"); //指定用于新创建的线程名称的前缀。executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());return executor;}
}

二、Durid数据库连接池

        Durid连接池配置主要为了监控由 Druid 数据源 管理的数据库连接性能,可以方便的从web页面查看数据库连接性能.同时需配置需过滤的请求文件和类型.

2.1 ServletRegistrationBean

        在ServletRegistrationBean配置中,需提供durid管理页面的访问路径,通过addInitParameter方法设置(deny)黑名单和(allow)白名单,(loginUsername)登录用户名和(loginPassword)密码,以及是否开启重置数据功能(resetEnable).

2.2 FilterRegistrationBean

        在FilterRegistrationBean可以通过addUrlPatterns配置拦截的路径,通过addInitParameter中的exclusions参数配置可直接访问的文件.


注:配置可直接访问文件以保证管理页面可正常显示

2.3 示例代码

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;/*** @author seaua*/
@Configuration
public class DruidConfig {private final Logger logger = LoggerFactory.getLogger(DruidConfig.class);@Beanpublic ServletRegistrationBean druidServlet() {ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");// IP白名单servletRegistrationBean.addInitParameter("allow", "*");// IP黑名单(共同存在时,deny优先于allow)servletRegistrationBean.addInitParameter("deny", "192.168.1.100");// 控制台管理用户servletRegistrationBean.addInitParameter("loginUsername", "admin");servletRegistrationBean.addInitParameter("loginPassword", "123456");// 是否能够重置数据 禁用HTML页面上的“Reset All”功能servletRegistrationBean.addInitParameter("resetEnable", "false");return servletRegistrationBean;}@Beanpublic FilterRegistrationBean filterRegistrationBean() {FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());filterRegistrationBean.addUrlPatterns("/*");filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");return filterRegistrationBean;}
}

三、Redis

        Redis数据库相关配置用于配置Redis的存储和序列化格式.

3.1 setKeySerializer

        使用 StringRedisSerializer 将键序列化为普通字符串格式,便于可读

3.2 setValueSerializer

         使用自定义的 JsonRedisSerializer 将值序列化为 JSON 格式。       

3.3 setHashKeySerializer

         将Hash键序列化为普通的字符串格式,方便阅读.

3.4 setHashValueSerializer

         使用自定义的JsonRedisSerializer将Hash值序列化为Json格式。

3.5 示例代码

import javax.annotation.Resource;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;import com.mozhi.archives.common.redis.serializer.JsonRedisSerializer;/*** @author seaua*/
@Configuration
public class RedisConfig {@Resourceprivate RedisConnectionFactory factory;@Beanpublic RedisTemplate<String, Object> redisTemplate() {RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();redisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setValueSerializer(new JsonRedisSerializer<>(Object.class));redisTemplate.setHashKeySerializer(new StringRedisSerializer());redisTemplate.setHashValueSerializer(new JsonRedisSerializer<>(Object.class));redisTemplate.setConnectionFactory(factory);return redisTemplate;}
}

相关阅读

  • Springboot应用开发:工具类整理

  • Springboot应用开发:SpringBootSecurity

  • Springboot秒集成视频推拉流


 我的社区:区块链社区


如果你对区块链感兴趣,可以浏览我的专栏:区块链

感谢您的关注和收藏!!!!!!

17a5b84bdcbb4896bda2b8481c3a53ce.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/65120.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Spring】深入解析 Spring 原理:Bean 的多方面剖析(源码阅读)

&#x1f525;个人主页&#xff1a; 中草药 &#x1f525;专栏&#xff1a;【Java】登神长阶 史诗般的Java成神之路 一、Bean的作用域 在 Java Spring 框架中&#xff0c;Bean 的作用域是一个关键概念&#xff0c;它决定了 Bean 的生命周期和实例化方式&#xff0c;对应用的性…

Excel 列名称转换问题 Swift 解答

文章目录 摘要描述题解答案Swift 实现代码&#xff1a;题解代码分析示例测试及结果 时间复杂度空间复杂度总结未来展望参考资料 摘要 本篇文章将通过 Swift 编程语言解答一个常见的算法问题&#xff1a;给定一个整数 columnNumber&#xff0c;将其转换为 Excel 表中的列名称。…

基于艾伦方差的频率稳定性分析

某个授时系统通过串口或网口采集时间间隔计数器、频率计数器、相位噪声分析仪设备的重要信息,用于评估和分析频率源的频率稳定度,确保测量的准确性和可靠性。 数据处理: 读取保存在文件中的时间间隔计数器测量的时差数据,计算时间稳定度(用TDEV表示)并保存。TDEV包括秒稳…

秒鲨后端之MyBatis【1】环境的搭建和核心配置文件详解

​ 别忘了请点个赞收藏关注支持一下博主喵&#xff01;&#xff01;&#xff01;! ! ! Mybatis简介 MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下&#xff…

虚幻引擎结构之ULevel

在虚幻引擎中&#xff0c;场景的组织和管理是通过子关卡&#xff08;Sublevel&#xff09;来实现的。这种设计不仅提高了资源管理的灵活性&#xff0c;还优化了游戏性能&#xff0c;特别是在处理大型复杂场景时。 1. 场景划分模式 虚幻引擎采用基于子关卡的场景划分模式。每个…

CentOS7下的vsftpd服务器和客户端

目录 1、安装vsftpd服务器和ftp客户端&#xff1b; 2、配置vsftpd服务器&#xff0c;允许普通用户登录、下载、上传文件&#xff1b; 3、配置vsftpd服务器&#xff0c;允许anonymous用户登录、下载、上传文件&#xff1b; 4、配置vsftpd服务器&#xff0c;允许root用户登录…

系统思考—全局思维

昨天接到一个企业需求&#xff0c;某互联网公司VP希望N-1的核心团队一起学习系统思考&#xff0c;特别是在新业务快速发展的阶段。公司增长势头不错&#xff0c;但如何解决跨部门的协作问题&#xff0c;成为了瓶颈。全局思维就是关键。产品、技术、市场、运营、客服……如何打破…

美国加州房价数据分析01

1.项目简介 本数据分析项目目的是分析美国加州房价数据&#xff0c;预测房价中值。 环境要求&#xff1a; ancondajupyter notebookpython3.10.10 虚拟环境&#xff1a; pandas 2.1.1 numpy 1.26.1 matplotlib 3.8.0 scikit-learn1.3.1 2. 导入并探索数据集 通用的数据分析…

LabVIEW软件开发的未来趋势

LabVIEW软件开发的未来趋势可以从以下几个方面来分析&#xff1a; ​ 1. 与AI和机器学习的深度结合 趋势&#xff1a;LabVIEW正在向集成AI和机器学习方向发展&#xff0c;尤其是在数据处理、预测性维护和自动化控制领域。 原因&#xff1a;AI技术的普及使得实验和工业场景中的…

使用Amazon Bedrock的无服务器的智能工作流

使用Amazon Bedrock的无服务器的智能工作流 智能工作流基于用户输入处理不可预见的任务&#xff0c;比如发起API调用。无服务器架构可以高效地管理这些任务和不同的工作负载&#xff0c;而无需维护服务器&#xff0c;从而加快部署速度。 你将学习如何通过使用带有保护措施的智能…

近实时”(NRT)搜索、倒排索引

近实时&#xff08;Near Real-Time, NRT&#xff09;搜索 近实时&#xff08;NRT&#xff09;搜索是 Elasticsearch 的核心特性之一&#xff0c;指的是数据在被写入到系统后&#xff0c;可以几乎立即被搜索和查询到。虽然它不像传统数据库那样完全实时&#xff0c;但它的延迟通…

【NACOS插件】使用官网插件更换NACOS数据库

说明 nacos 2.3.1默认支持mysql和derby数据库&#xff0c;如果想要支持其他数据库&#xff0c;可以通过使用插件方式实现。对于该插件的使用&#xff0c;官方说明文档较为粗略(不过也没问题&#xff0c;实际上整个过程就是很简单&#xff0c;只是使用者想复杂了)&#xff0c;网…

Pytorch | 利用FGSM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用FGSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集FGSM介绍FGSM代码实现FGSM算法实现攻击效果 代码汇总fgsm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器&#xff1a; Pytorch | 从零构建AlexNet对CIFAR10进行分类 Pytorch | 从零构建Vgg…

【IC验证】verilog及systemverilog特殊特性的分析

verilog及systemverilog特殊特性的分析 1.概述2.赋值延迟&#xff08;0&#xff09;总结&#xff08;1&#xff09;情况一&#xff1a;initial中进行阻塞赋值和非阻塞赋值&#xff08;不延迟&#xff09;a代码b 电路图c 结果 &#xff08;2&#xff09;时钟a 代码b 电路图c 结果…

考前96天 学习巩固 计算机、数学、英语

2024年12月24日到2025年3月29日共有 96​ 天 一、计算机基础 回顾&#xff1a; 三大思维&#xff1a; 数学 推理/理论 物理 证实/实验 计算机 构造/计算 本质——》抽象/自动化 计算复杂性&#xff1a;空间复杂性、时间复杂性 计算机系统的组成&#xff1a; 1️⃣硬件…

如何用digital实现一个4位的减法器?

文件可以在下方链接下载&#xff1a; https://download.csdn.net/download/dashuchengtian/90178176 组件拼接如下图所示&#xff1a; 其中A和B是一个4位的输入&#xff0c;Cin表示有无借位&#xff0c;S表示和&#xff0c;Cout表示的是借位输出。 运行结果如下&#xff0c;以…

C++之“流”-第5课.三军联动:流 +操作符+函数重载

如何针对特定函数类型重载流输出操作符&#xff1f;这样做有什么用处&#xff1f;C语言中&#xff0c;“流”、“操作符”、“函数重载” 这三大军团如何配合作战&#xff1f; 前言 C中&#xff0c;“流” 的日常运用&#xff0c;最基本的就是在你的代码里使用 << 和 &g…

并发编程(19)——引用计数型无锁栈

文章目录 十九、day191. 引用计数2. 代码实现2.1 单引用计数器无锁栈2.2 双引用计数器无锁栈 3. 本节的一些理解 十九、day19 上一节我们学习通过侯删链表以及风险指针与侯删链表的组合两种方式实现了并发无锁栈&#xff0c;但是这两种方式有以下缺点&#xff1a; 第一种方式…

【微信小程序】2|轮播图 | 我的咖啡店-综合实训

轮播图 引言 在微信小程序中&#xff0c;轮播图是一种常见的用户界面元素&#xff0c;用于展示广告、产品图片等。本文将通过“我的咖啡店”小程序的轮播图实现&#xff0c;详细介绍如何在微信小程序中创建和管理轮播图。 轮播图数据准备 首先&#xff0c;在home.js文件中&a…

tortoisegit推送失败

tortoisegit推送失败 git.exe push --progress -- "origin" testLidar:testLidar /usr/bin/bash: gitgithub.com: No such file or directory fatal: Could not read from remote repository. Please make sure you have the correct access rights and the reposit…