Spring Schedule介绍
作业调度,例如定时任务
Spring Schedule Cron表达式
- Cron表达式的格式:秒 分 时 日 月 周 年(可选)
- Seconds
- Minutes
- Hours
- Day-of-Month
- Month
- Day-of-Week
- Year(可选字段)
Spring Schedule Cron 配置
<task:annotation-driven/>
xmlns:task="http://www.springframework.org/schema/task"
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd
@Component //在Spring Schedu类上加上这个注解,把这个类注册为Spring容器中的一员
@Scheduled(cron = "0 */1 * * * ?") //在要执行的定时任务方法上加上这个注解
Spring Schedule Cron 生成器
MySQL 行锁、表锁
- SELECT ... FOR UPDATE (悲观锁)
- 使用InnoDB引擎
- Row-Level Lock(明确的主键)
- Table-Level Lock (无明确的主键)
例如:
product表,有id和name,id为主键
明确指定主键,并且有结果集,Row-Level Lock
SELECT * FROM product WHERE id = '66' FOR UPDATE;
明确指定主键,并且无结果集,无Lock
SELECT * FROM product WHERE id = '-100' FOR UPDATE;
无主键Table-Level Lock
SELECT * FROM product WHERE name = 'iphone' FOR UPDATE;
主键不明确 Table-Level Lock
SELECT * FROM produc WHERE id <> '66' FOR UPDATE;
SELECT * FROM produc WHERE id LIKE '66' FOR UPDATE;