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");
    }
}
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐