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

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 {
    @Bean
    public 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.2FilterRegistrationBean

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);

	@Bean
	public 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;
	}

	@Bean
	public 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.2setValueSerializer

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

3.3 setHashKeySerializer

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

3.4setHashValueSerializer

使用自定义的**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 {
    @Resource
    private RedisConnectionFactory factory;

    @Bean
    public 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.kler.cn/a/514020.html

相关文章:

  • Cursor的详细使用指南
  • Mysql触发器(学习自用)
  • Java自定义多队列线程池
  • 智能新浪潮:亚马逊云科技发布Amazon Nova模型
  • Windows电脑安装USB Redirector并实现内外网跨网USB共享通信访问
  • 2024 年度学习总结
  • 如何配置安全的香港邮件服务器?
  • Solana 套利机器人原理
  • VScode 开发 Springboot 程序
  • xml中根据传入值动态设置查询表的表名
  • SELF-RAG: 通过自我反思学习检索、生成和批判——图文并茂总结
  • Unity环境搭建
  • 2024嵌入式系统的未来发展与技术洞察分享
  • C语言程序设计十大排序—插入排序
  • 深度学习笔记——循环神经网络RNN
  • 详解Redis的Hash类型及相关命令
  • Linux 安装gitlab
  • Windows图形界面(GUI)-QT-C/C++ - Qt QGroupBox详解教程
  • JJJ:arm64架构下的asid相关
  • ubuntu24.04安装mysql 5.7.44版本
  • 第35天:安全开发-JavaEE应用原生反序列化重写方法链条分析触发类类加载
  • Android 自定义 View _ 扭曲动效
  • 【WebGL】-02 绘制动态点
  • 【经验总结】ShardingSphere5.2.1 + Springboot 分库分表 快速开始
  • AI Video Composer:基于Qwen2.5-Coder的简易开源视频创作利器
  • 【SpringBoot深入浅出系列】SpringBoot之多线程