这 6 个 SpringBoot 项目够经典!

前言

不得不佩服 SpringBoot 的生态如此强大,今天给大家推荐几款优秀的后台管理系统,小伙伴们再也不用从头到尾撸一个项目了。

SmartAdmin

我们开源一套漂亮的代码和一套整洁的代码规范,让大家在这浮躁的代码世界里感受到一股把代码写好的清流!同时又让开发者节省大量的时间,减少加班,快乐工作,热爱生活。SmartAdmin 让你从认识到忘不了,绝对是你最想要的!

7175e972ba59109278f881fe44bbaec1.png

234d2d95189a7bec087d26712eb2bdb8.png

项目地址:https://gitee.com/lab1024/smart-admin

litemall

又一个小商场系统,Spring Boot后端 + Vue管理员前端 + 微信小程序用户前端 + Vue用户移动端。

b9729ad5d05602f3613dd605d82db878.png

项目地址:https://gitee.com/linlinjava/litemall

Timo

TIMO后台管理系统,基于SpringBoot2.0 + Spring Data Jpa + Thymeleaf + Shiro 开发的后台管理系统,采用分模块的方式便于开发和维护,支持前后台模块分别部署,目前支持的功能有:权限管理、部门管理、字典管理、日志记录、文件上传、代码生成等,为快速开发后台系统而生的脚手架!

技术选型

  • 后端技术:SpringBoot + Spring Data Jpa + Thymeleaf + Shiro + Jwt + EhCache

  • 前端技术:Layui + Jquery + zTree + Font-awesome

d28921140da8a14c45a95481f0529051.png

890d3d04b7fbb2d4e42bc6605d26baaf.png

项目地址:https://gitee.com/aun/Timo

微信搜索公众号:程序员开源社区,回复“资源”,获取更多精品学习资料。

mall4j

一个基于spring boot、spring oauth2.0、mybatis、redis的轻量级、前后端分离、防范xss攻击、拥有分布式锁,为生产环境多实例完全准备,数据库为b2b2c设计,拥有完整sku和下单流程的完全开源商城。

项目致力于为中小企业打造一个完整、易于维护的开源的电商系统,采用现阶段流行技术实现。后台管理系统包含商品管理、订单管理、运费模板、规格管理、会员管理、运营管理、内容管理、统计报表、权限管理、设置等模块。

03c5cc4ae0d6ec655a14e6a892ed2848.png

12d048b2521f8c46216746570e5be91b.png

项目地址:https://gitee.com/gz-yami/mall4j

web-flash

基于Spring Boot+Vue的后台管理系统,权限管理,字典,配置,定时任务,短信,邮件,根据excel模板导出,cms内容管理,手机端h5,IDEA 代码生成插件。

102cf96f8abbaaac3e139e99ff69e974.png

项目地址:https://gitee.com/enilu/web-flash

SPTools

一个基于SpringBoot、JPA、Shiro的后台管理系统,单体架构,依赖少,极易上手,后端开发的福利。最重要的是还附带免费小程序以及微服务版本,可自行选择。

内置功能

  • 组织机构:机构管理、用户管理、角色管理、行政区域。

  • 系统监控:系统日志、在线用户,后期会慢慢追加完善。

  • 应用管理:任务调度、邮件管理、图片管理、文章管理、打卡任务、数据查询、人工智能,每个模块只需要你稍作修改就可以打造成一个项目了。

  • 系统管理:敏捷开发、系统菜单、全局配置、在线代码编辑器,小伙伴们只需要设计好表结构,三秒钟就能撸出一个增删查改的模块。

3af78a32632b6a2800cea7e8e1a18172.png

80102bc727f4ac62114d7c692d2593c4.png

0af985ff6e7fec2630abff7d641bd0a6.png

1f55246a3735a385de87578148097853.png

939ffcdf0426cb8d2734060df8dbc5c4.png

52e878806970b470f3c60adaca16b7c5.png

298efada4cbcc644d661fb407820e5ae.png

f710982d0e12a290759510168d7a9a7d.png

cfe323c54c41ec5f5ec2f7b07c55c779.png

88ac82593b82af9b67ac6b93ef5c59ea.png

4866a545bd9c54be0a9be2c5e9841b20.png

aff11a41a36c538d10d1dc557419ae54.png

a79523062698dc9acfc6058e31bff1d7.png

8ea7e9ce3e057d06e0eee142eebdc66d.png

c93fe7515696428ef9fcaedd3775d3b8.png

a4c95f90334ee0c0b203fe04fc8ea564.png

项目地址:https://gitee.com/52itstyle/SPTools

小结

最后感谢各位撸主贡献出了这么优秀的开源项目,大家可以访问项目支持一下,如果觉得不错可以顺手给个小星星。

 
 

PS:如果觉得我的分享不错,欢迎大家随手点赞、在看。

 
 

(完)

加我"微信" 获取一份 最新Java面试题资料

dbae420f41cfc290848a466d1bea2b94.png

请备注:666,不然不通过~

最近好文

1、Kafka 3.0重磅发布,弃用 Java 8 的支持!

2、你只会用 ! = null 判空?嘿嘿!

3、这次,Swagger-ui遇到对手了!

4、一个基于Spring Boot+Vue+Redis的物联网智能家居系统

5、本机号码一键登录原理与应用

 
 

b1d6600b113b2a17cd247f9a94e0ef5c.png

 
 
最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:关注公众号并回复 java 领取,更多内容陆续奉上。

你点的每个在看,我都认真当成了喜欢

<think>嗯,用户问的是在Spring Boot微服务项目中应该创建一个线程池还是多个线程池。首先,我需要回想一下线程池的基本概念以及它们在微服务中的应用场景。线程池主要用于管理线程,避免频繁创建和销毁线程带来的开销,提高系统性能。 接下来,我得考虑不同的使用场景。比如,用户可能在不同的业务模块中需要不同的线程处理策略。比如有的任务可能需要高优先级,而有的则是后台异步处理,对实时性要求不高。这时候,使用不同的线程池可以隔离资源,防止一个任务影响其他任务的执行。 然后,要想到线程池的参数配置。核心线程数、最大线程数、队列容量这些参数如何设置。如果所有任务都共用一个线程池,可能会出现某个任务占用过多资源,导致其他任务被阻塞。例如,一个耗时较长的I/O操作可能会占满线程池,导致其他快速响应的任务无法及时处理。 另外,还要考虑系统的可维护性和扩展性。使用多个线程池可以根据不同模块进行独立调优,出现问题也更容易定位。比如,订单服务和支付服务可能需要不同的线程池配置,订单服务可能需要更高的并发处理能力,而支付服务则需要更严格的响应时间保证。 不过,也不能一概而论。如果项目规模较小,任务类型单一,使用一个线程池可能更简单,减少复杂性和资源消耗。这时候需要权衡,避免过度设计。 还要记得提到Spring Boot中如何配置多个线程池,比如使用@Bean注解创建不同的ThreadPoolTaskExecutor实例,并通过@Async指定使用的执行器。这样可以在代码中灵活选择不同的线程池执行不同的任务。 最后,总结关键点:根据业务需求和场景选择,资源隔离、避免饥饿、优先级处理等因素倾向于使用多个线程池;而简单应用则可能一个就了。同时,给出实际配置的例子会更有帮助,但用户可能只需要概念性的指导,所以保持解释清晰即可。</think>在Spring Boot微服务项目中,使用**单个线程池还是多个线程池**取决于具体的业务场景和需求。以下是两者的对比和典型使用场景: --- ### **1. 单个线程池的适用场景** - **简单业务逻辑**:如果项目中所有异步任务的优先级、响应时间和资源消耗相似(例如日志处理、简单计算等),一个全局线程池可能足。 - **资源有限**:当服务器资源较少(如低配置环境)时,避免过多线程池的开销。 - **统一管理**:方便监控和参数调优(如核心线程数、队列容量等)。 #### **示例配置** ```java @Configuration @EnableAsync public class AsyncConfig { @Bean(name = "globalThreadPool") public Executor globalThreadPool() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(10); executor.setMaxPoolSize(50); executor.setQueueCapacity(100); executor.setThreadNamePrefix("Global-Async-"); executor.initialize(); return executor; } } ``` --- ### **2. 多个线程池的适用场景** - **资源隔离需求**:避免关键任务被非关键任务阻塞(例如支付服务与日志服务分离)。 - **优先级差异**:高优先级任务(如订单处理)需要独立线程池,防止低优先级任务(如报表生成)占用资源。 - **不同响应要求**:短耗时任务(如缓存刷新)和长耗时任务(如文件导出)分离,避免线程饥饿。 - **防止级联故障**:避免某一类任务异常(如线程阻塞)导致整个系统不可用。 #### **示例配置** ```java @Configuration @EnableAsync public class AsyncConfig { // 高优先级线程池(如支付处理) @Bean(name = "highPriorityPool") public Executor highPriorityPool() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(20); executor.setMaxPoolSize(100); executor.setQueueCapacity(50); executor.setThreadNamePrefix("HighPrio-Async-"); executor.initialize(); return executor; } // 低优先级线程池(如日志处理) @Bean(name = "lowPriorityPool") public Executor lowPriorityPool() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(5); executor.setMaxPoolSize(20); executor.setQueueCapacity(200); executor.setThreadNamePrefix("LowPrio-Async-"); executor.initialize(); return executor; } } ``` #### **使用时指定线程池** ```java @Service public class OrderService { @Async("highPriorityPool") // 指定线程池 public void processPayment() { // 高优先级业务逻辑 } } @Service public class LogService { @Async("lowPriorityPool") // 指定线程池 public void saveLog() { // 低优先级业务逻辑 } } ``` --- ### **3. 关键考量因素** - **任务性质**:CPU密集型(线程数 ≈ CPU核心数) vs. I/O密集型(可适当增加线程数)。 - **队列策略**:根据任务容忍延迟性选择队列类型(如`LinkedBlockingQueue`或`SynchronousQueue`)。 - **监控与调优**:通过Micrometer、Prometheus等监控线程池指标(活跃线程数、队列大小、拒绝次数)。 - **拒绝策略**:根据业务需要选择`AbortPolicy`(直接拒绝)或`CallerRunsPolicy`(由调用线程执行)。 --- ### **总结** - **推荐多线程池**:大多数微服务场景下,建议为不同业务模块或任务类型分配独立线程池,以实现资源隔离和稳定性。 - **避免过度设计**:小型项目或简单任务可先用单一线程池,后续按需扩展。 - **动态调参**:结合Spring Actuator或配置中心(如Nacos)实现线程池参数动态调整。 合理选择线程池策略,能显著提升微服务的吞吐量、响应速度和容错能力。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值