Springboot应用开发:配置类整理

本文涉及的产品
云原生网关 MSE Higress,422元/月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 在使用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;
    }
}

image.gif

二、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);
  @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;
  }
}

image.gif

三、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 {
    @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;
    }
}

image.gif


相关阅读


我的社区:区块链社区


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

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

image.gif 编辑

目录
相关文章
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
SQL 消息中间件 JSON
datafaker --- 测试数据生成工具
本文介绍如何使用datafaker工具生成测试数据
|
4月前
|
监控 Java 开发工具
Springboot秒集成-视频推拉流
在工作中需要用到视频的推拉流服务,刚开始准备使用netty服务自己实现RTSP推拉流服务,但在RTSP解包时卡住,自己实现难度确实有点大,后来在网上找到了Zlm4j库,它是基于ZLMediaKit服务实现的Jna版本,可以很容易的集成到Springboot中,在此也。希望本篇博客可以帮助到想快速实现视频推拉流服务的朋友。
515 10
|
Java Spring
Springboot如何使用线程池
Springboot如何使用线程池
761 2
|
监控 Java Spring
Spring Boot中一般如何使用线程池?
在Spring Boot应用程序中,合理地使用线程池可以有效地提高系统的性能和并发处理能力。本文将深入探讨Spring Boot中如何一般性地使用线程池,包括线程池的配置、使用方式以及一些最佳实践。
2050 0
|
9月前
|
Java 数据库 开发者
详细介绍SpringBoot启动流程及配置类解析原理
通过对 Spring Boot 启动流程及配置类解析原理的深入分析,我们可以看到 Spring Boot 在启动时的灵活性和可扩展性。理解这些机制不仅有助于开发者更好地使用 Spring Boot 进行应用开发,还能够在面对问题时,迅速定位和解决问题。希望本文能为您在 Spring Boot 开发过程中提供有效的指导和帮助。
1138 12
|
JavaScript 前端开发 Java
SpringBoot配置文件 —— 超详细全方位教程
本文是一篇关于SpringBoot配置文件的超详细全方位教程,涵盖了配置文件的作用、SpringBoot中的配置文件格式、优先级、properties和yml配置文件的详解及语法、读取配置文件的方法、转义字符和单双引号的使用、配置对象、集合和Map,以及yml的优缺点。
1668 0
SpringBoot配置文件 —— 超详细全方位教程
|
NoSQL Java Redis
springboot整合redis
这篇文章介绍了如何在Spring Boot中整合Redis,包括搭建Redis环境、添加依赖、创建实体类、控制器以及配置文件,并说明了在连接Redis时需要启动Redis服务。
springboot整合redis
|
Java Spring 容器
Spring boot 自定义ThreadPoolTaskExecutor 线程池并进行异步操作
Spring boot 自定义ThreadPoolTaskExecutor 线程池并进行异步操作
1035 3
|
Java Spring
spring boot 中默认最大线程连接数,线程池数配置查看
spring boot 中默认最大线程连接数,线程池数配置查看
945 4