spring+
Quartz 的定时任务
实例
xml配置
<bean id="messagegAlarm" class="com.wopai.base.api.sms.MessagegAlarm"> </bean>
// 业务bean定义
<bean id="messagegAlarmJob"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="messagegAlarm"></property>
<property name="targetMethod" value="doTask"></property>
</bean>
// messagegAlarmJob任务定义,
// targetObject 指定要调用的对象,
// targetMethod 指定要调用的方法,
<bean id="messagegAlarmCron" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="messagegAlarmJob"></property>
<property name="cronExpression" value="0/10 * * * * ?"></property>
</bean>
// messagegAlarmCron 定义触发器
// jobDetail 绑定任务
// cronExpression 执行时间规则
项目安全
Spring Security
定义:请求拦截+身份核验+权限判断”的过滤器链框架。

Spring Security 认证流程 中的核心组件,分别位于配置层、过滤器层、业务逻辑层和数据载体层,各司其职并协同完成用户认证。它们的关系可以概括为:配置器(SecurityConfigurerAdapter)组装过滤器(AbstractAuthenticationProcessingFilter),过滤器封装令牌(AbstractAuthenticationToken),认证提供者(AuthenticationProvider)验证令牌。
类 层级 核心职责 典型子类 / 实现
SecurityConfigurerAdapter,配置层 ,安全配置适配器,组装 / 初始化安全组件(过滤器、Provider 等); WebSecurityConfigurerAdapter, AbstractHttpConfigurer。
AbstractAuthenticationProcessingFilter ,过滤器层 ,拦截登录请求,入口,创建并提交 Token ;UsernamePasswordAuthenticationFilterSpring。
AbstractAuthenticationToken ,数据层 ,认证信息载体(用户、凭证、权限、状态); UsernamePasswordAuthenticationToken。
AuthenticationProvider ,逻辑层, 具体认证逻辑(验凭证、查库、比对); DaoAuthenticationProvider。
jwt无状态+缓存有状态
这是一个很典型的“JWT 无状态 + 缓存有状态”双层设计,两层的过期时间各司其职,不是矛盾,而是互补。
JWT Token 6 小时 签名自校验,声明“这个令牌本身最长有效 6 小时” 令牌是不是伪造的?是不是过了最大寿命?
Java 缓存(token → jwtUser) 30 分钟 存储“最近活跃用户”的解析结果,或充当白名单 这个用户最近还在活动吗?能不能直接拿到用户信息?
效果就是:
6 小时 = token 的“最大寿命”(硬上限)
30 分钟 = “最长不活动时间”(软超时)
Java SPI
SPI = service provider interface
定义 = java6 引入的一种基于classLoader来发现并加载服务的机制。
组成 = Service、Service Provider、ServiceLoader;
Service = 是一个公开的接口或抽象类,定义了一个抽象的功能模块。
Service Provider = 是Service接口的一个实现类。
ServiceLoader = 是SPI机制中的核心组件,负责在运行时发现并加载Service Provider。
Java SPI的运行流程

SPI 在JDBC中的应用
JDBC 全称 = Java Data Base Connectivity
定义 = 使用Java语言来访问数据库的一套API;每个数据库厂商会提供各自的JDBC实现(数据库驱动)
JDBC的架构:



Java SPI的三大规范要素




接口规范
Restful
Restful风格是一种软件架构风格,而不是标准,只是提供了一种接口设计原则和约束条件。
有五种类型:Get 获取资源;Put 更新资源;Patch 更新部分属性;Delete 删除资源;Post 创建资源。
案例:
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
UserService userService;
//注意:参数记得加注解@PathVariable,对象实体类记得加@ModelAttribute,不一样的
/*查询单条*/
@GetMapping("/{id}")
public User getUserById(@PathVariable Integer id){
System.out.println(id);
return userService.getUserById(id);
}
/*查询全部*/
@GetMapping
public List<User> getUsers(){
return userService.getUsers();
}
/*新增*/
@PostMapping
public Map insert(@ModelAttribute User user){
userService.insert(user);
return Map.of("code","0000");
}
/*删除*/
@DeleteMapping("/{id}")
public Map delete(@PathVariable Integer id){
userService.delete(id);
return Map.of("code","0000");
}
/*修改*/
@PutMapping("/{id}")
public Map update(@ModelAttribute User user,@PathVariable Integer id){
userService.update(user,id);
return Map.of("code","0000");
}
}
更多推荐



所有评论(0)