2026.3.29
xxl-job对比其他定时任务处理器的优势
- 支持动态更新cron表达式
- 日志写入
- 任务失败通知
- 提供可视化监控
- 支持分布式任务
IOC的原理
项目启动的时候会扫描所有类是否包含容器化管理的注解,如果有先将类信息统一封装成BeanDefination的规范,然后通过反射机制调用空参构造函数进行实例化,然后进行依赖注入,调用初始化方法,以及postconstruct注解方法,进行aop增强,包装成bean对象后放入IOC容器中
xxxxxxxxxx public class Main { public static volatile AtomicInteger INTEGER = new AtomicInteger(0); public static void main(String[] args) throws InterruptedException { // 原子类实现自增操作 for (int i = 0; i < 10; i++) { new Thread(INTEGER::incrementAndGet).start(); } Thread.sleep(5); System.out.println(INTEGER.get()); }}java
1.项目启动不会扫描所有类,而是扫描包路径下带有@bean和@component类
2.不一定调用空参构造
3.依赖注入需要注意循环引用问题
4.postconstruct -> init -> 自定义init -> aop
5.放入一级缓存中Hashmap
spring和springboot的区别
有一个很好的比喻说的是springboot就像你直接购买的整机,而spring是你自己购买配件,自己组装的diy机子
- springboot本质就是一个基于spring的脚手架,能帮你忽略一些繁重的配置工作,包括数据库连接池、事务管理器等
- springboot的起步依赖也非常完善,自动帮你引入了web开发的各种依赖
- springboot内部还集成了tomcat,项目启动后打jar包就自动部署到tomcat上,spring还需要先打包war包,再部署到服务器上
kafka的实现机制
- 分为身缠在、broker、消费者
- 消息存储在patition中,每个topic之下有许多patition,消息写入是追加写,速度很快
- patition之间有主从,可以保证高可用
- 消费者主动pull,broker只需要记录每个patition的offset




