1.Spring Boot
在Java项目开发中,Spring是一个使用非常广泛的框架,但是随着Spring的发展,Spring变得越来越复杂、笨重;
为了解决这个问题,Pivotal团队在2013年,以Spring为基础,开发了一个全新的框架,也就是Spring Boot;2014年4月Spring Boot 1.0正式发布;
Spring Boot的核心理念:约定大约配置,使用了这种方式来进行配置,从而使开发人员不再需要定义样板化的配置。
Spring Boot并不是Spring的替代品,Spring Boot整合很多可插拔的组件(框架),内嵌了容器(比如Tomcat、Jetty等),方便开发人员快速搭建和开发的一个框架。
2.Shiro
Shiro是一个非常强大的、易于使用的、开源的、Java安全框架,主要包括身份验证、授权、密码和会话管理等组件;
三个核心组件:Subject, SecurityManager 和 Realms;
Subject:表示“当前操作对象”,即当前跟软件交互的对象;
SecurityManager:即安全管理器,它是shiro的核心,负责对所有的subject进行安全管理。通过SecurityManager可以完成subject的认证、授权等,实质上SecurityManager是通过Authenticator进行认证,通过Authorizer进行授权,通过SessionManager进行会话管理等。
Realm:充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。
Authentication:身份认证/登录,验证用户是不是拥有相应的身份;
Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;
Session Manager:即会话管理,shiro框架定义了一套会话管理,它不依赖web容器的session,所以shiro可以使用在非web应用上,也可以将分布式应用的会话集中在一点管理,此特性可使它实现单点登录;
Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储,加密方式(SHA、MD5);
CacheManager:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率;
Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。
3.Quartz
定时任务实现方式,有Java中有自带的Timer->TimerTask, ScheduledExecutorService,Spring实现的Scheduled等;
Quartz是完全基于Java实现的一个任务调度组件,相比于上面这几种方式,功能上要更加强大;
存储方式:RAMJobStore(内存), JobStoreSupport(数据库)
可实现分布式和集群
Job:是一个接口,开发者实现该接口定义运行任务;
JobDetail:Quartz在每次执行Job时,都重新创建一个Job实例,所以它不直接接受一个Job的实例,相反它接收一个Job实现类,以便运行时通过newInstance()的反射机制实例化Job。因此需要通过一个类来描述Job的实现类及其它相关的静态信息,如Job名字、描述、关联监听器等信息,JobDetail承担了这一角色。
Trigger:是一个类,描述触发Job执行的时间触发规则。主要有SimpleTrigger和CronTrigger这两个子类。当仅需触发一次或者以固定时间间隔周期执行,可以选择使用SimpleTrigger;而CronTrigger则可以通过Cron表达式定义出各种复杂时间规则的调度方案;
Scheduler:代表一个Quartz的独立运行容器;
ThreadPool:Scheduler使用一个线程池作为任务运行的基础设施,任务通过共享线程池中的线程提高运行效率
Calendar:可使用这个对象,来过滤掉不需要执行任务的日期;